From 353a27f12fd484c3a56e3067ec34e21c666efcf1 Mon Sep 17 00:00:00 2001 From: Katherine Parry <kparry4@gmail.com> Date: Tue, 22 Jun 2021 16:36:16 -0400 Subject: [PATCH] rv64f FLW passes imperas tests --- wally-pipelined/src/fpu/FMA/tbgen/tb.sv | 2 +- wally-pipelined/src/fpu/FMA/tbgen/tb.v | 246659 ++------------- wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh | 2 +- wally-pipelined/src/fpu/fma2.sv | 6 +- wally-pipelined/src/fpu/fpu.sv | 218 +- .../src/wally/wallypipelinedhart.sv | 1 - .../testbench/testbench-imperas.sv | 24 +- 7 files changed, 32138 insertions(+), 214774 deletions(-) diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.sv b/wally-pipelined/src/fpu/FMA/tbgen/tb.sv index 48dc16da..4c93cd57 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/tb.sv +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.sv @@ -110,7 +110,7 @@ always @(posedge clk) if(ans >= 64'h7FF8000000000000 && ans <= 64'h7FFfffffffffffff ) $display( "ans=qutNaN "); if(ans >= 64'hFFF8000000000000 && ans <= 64'hFFFfffffffffffff ) $display( "ans=qutNaN "); errors = errors + 1; - // if (errors == 40) + if (errors == 20) $stop; end if((FmtE==1'b0)&(FmaFlagsM != flags[4:0] || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0]))) ))) begin diff --git a/wally-pipelined/src/fpu/FMA/tbgen/tb.v b/wally-pipelined/src/fpu/FMA/tbgen/tb.v index 0fbdb80b..89322456 100644 --- a/wally-pipelined/src/fpu/FMA/tbgen/tb.v +++ b/wally-pipelined/src/fpu/FMA/tbgen/tb.v @@ -1,4 +1,52 @@ -`timescale 1 ns/10 ps + +# b7af837a135ee92b 0000000000000001 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# ydenorm +# zdenorm +# 3ca001fffff00000 0010000000000001 8010000000000000 8010000000000000 8010000000000000 01 03 Wrong +# 3c473b766ac099d4 8010000000000001 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# zdenorm +# 1c641420ab961345 8ceee6be68d6f224 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# zdenorm +# 37efffffbfffff80 800ff00000002000 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# ydenorm +# zdenorm +# 000130f47e558cd8 b7e67db1e2e6bcc6 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# zdenorm +# 028ffffdffffffbf 800fbfffdfffffff 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# ydenorm +# zdenorm +# 0000000000000001 bcaff7efffffffff 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# zdenorm +# b7affff800040000 000fffffffffffff 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# ydenorm +# zdenorm +# 800ff7ffffffefff 001fffffffffffff 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# zdenorm +# b7e0101ffffffffe 001ffffffffffffe 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# zdenorm +# 0000000000000001 802000000000043f 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# zdenorm +# 0000000000000001 3fe0000000000000 8010000000000000 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 3fe0000000000001 8010000000000000 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 3fefffffffffffff 8010000000000000 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 3feffffffffffffe 8010000000000000 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 bfd01fffdfffffff 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# zdenorm +# 0000000000000001 3fffffffffffffff 8010000000000001 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 3ffffffffffffffe 8010000000000001 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm +# 0000000000000001 b80ffffffff80003 800fffffffffffff 8010000000000000 8010000000000000 01 03 Wrong +# xdenorm `timescale 1 ns/10 ps module tb; @@ -67,214661 +115,31958 @@ fma2 UUT2(.FInput1M(FInput1E), .FInput2M(FInput2E), .FInput3M(FInput3E), .FrmM(F initial begin fp = $fopen("/home/kparry/riscv-wally/wally-pipelined/src/fpu/FMA/tbgen/results.dat","w"); - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h000040F 00000000; - FInput3E = 64'h1CC0000000000000; - ans = 64'h03FFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1000\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2001\n"); - end - FInput1E = 64'h000BFFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'h03007FFF00000000; - ans = 64'h000000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3002\n"); - end - FInput1E = 64'h3FEFDB7000000000; - FInput2E = 64'h8D7DF8E 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4003\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h42E2E70500000000; - ans = 64'h7984E3 400000000; - flags = 5'hB7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B7 "); - $fwrite(fp,"5004\n"); - end - FInput1E = 64'h01B0000000000000; - FInput2E = 64'h010000F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h7C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7C "); - $fwrite(fp,"6005\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFB00040000000000; - ans = 64'h00007E C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"7006\n"); - end - FInput1E = 64'h802FFFFF00000000; - FInput2E = 64'hBFFFFF0 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h400000 400000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"8007\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"9008\n"); - end - FInput1E = 64'h000981D700000000; - FInput2E = 64'h7EEDB6D 00000000; - FInput3E = 64'hFEF8B12100000000; - ans = 64'hD829F4 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"10009\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"11010\n"); - end - FInput1E = 64'hC3C1ED4500000000; - FInput2E = 64'h6B0CC4E 00000000; - FInput3E = 64'h0156F00B00000000; - ans = 64'h66DDA8 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"12011\n"); - end - FInput1E = 64'hCCF0003F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"13012\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hA9FFFFFF00000000; - ans = 64'hFFFFFA 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"14013\n"); - end - FInput1E = 64'h7FEBFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"15014\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1E00008400000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"16015\n"); - end - FInput1E = 64'h381FE00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5C00000000000000; - ans = 64'h01FFBF C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"17016\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"18017\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hE00001F 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000201 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"19018\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"20019\n"); - end - FInput1E = 64'h801F7FFF00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hD7FFFF 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"21020\n"); - end - FInput1E = 64'hC3DF400000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"22021\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB100000000000000; - ans = 64'h0043FF C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"23022\n"); - end - FInput1E = 64'h381FFFFF00000000; - FInput2E = 64'hF800004 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"24023\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCCE16F800000000; - ans = 64'h2D5F85 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"25024\n"); - end - FInput1E = 64'h4000100000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h8E00021F00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"26025\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"27026\n"); - end - FInput1E = 64'hCCE0080000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE6E0FAC00000000; - ans = 64'hDC6E26 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"28027\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'h5C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5C "); - $fwrite(fp,"29028\n"); - end - FInput1E = 64'h4A5007E000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8A0007FF00000000; - ans = 64'hFFDFFF 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"30029\n"); - end - FInput1E = 64'h3F5FBFFF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"31030\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h970007FF00000000; - ans = 64'hF7FFFF B00000000; - flags = 5'hAD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AD "); - $fwrite(fp,"32031\n"); - end - FInput1E = 64'hBFB88C6700000000; - FInput2E = 64'h6A945EB 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h28; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"28 "); - $fwrite(fp,"33032\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3FFFFDFF00000000; - ans = 64'hFFFFF6 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"34033\n"); - end - FInput1E = 64'hBA7A4D5300000000; - FInput2E = 64'hA171C35 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h03FFFD 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"35034\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"36035\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFF9FFE 00000000; - FInput3E = 64'h01BD061900000000; - ans = 64'h7ED129 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"37036\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"38037\n"); - end - FInput1E = 64'h4020FFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h9EFFF80000000000; - ans = 64'h0003FE 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"39038\n"); - end - FInput1E = 64'h407FFFBF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"40039\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h5B086D0E00000000; - ans = 64'h53620B B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"41040\n"); - end - FInput1E = 64'hC0EFFFFF00000000; - FInput2E = 64'hFFFDEFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"42041\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFDEB8EC00000000; - ans = 64'h05749D 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"43042\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'hFFFC800 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFE000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"44043\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"45044\n"); - end - FInput1E = 64'hB80E813000000000; - FInput2E = 64'h53F5569 00000000; - FInput3E = 64'hA9FFFEFF00000000; - ans = 64'hFFF000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"46045\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"47046\n"); - end - FInput1E = 64'h3955441F00000000; - FInput2E = 64'hA96C731 00000000; - FInput3E = 64'h07E0000000000000; - ans = 64'h0003FF 400000000; - flags = 5'h31; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31 "); - $fwrite(fp,"48047\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"49048\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0294615500000000; - ans = 64'h392D59 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"50049\n"); - end - FInput1E = 64'hC3FFFDFF00000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"51050\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80BFFFFF00000000; - ans = 64'hFFFFFD B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"52051\n"); - end - FInput1E = 64'h3E5FC46300000000; - FInput2E = 64'h8EAE50D 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h00000E 400000000; - flags = 5'h2D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2D "); - $fwrite(fp,"53052\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"54053\n"); - end - FInput1E = 64'h0004000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEF884D3500000000; - ans = 64'h974B28 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"55054\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"56055\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h3FFFFBF 00000000; - FInput3E = 64'h818B6E4C00000000; - ans = 64'h93E11B 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"57056\n"); - end - FInput1E = 64'h40BFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"58057\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hC4FFFFE000000000; - ans = 64'h000000 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"59058\n"); - end - FInput1E = 64'h40D455A300000000; - FInput2E = 64'h879980C 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"60059\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h893E0E3A00000000; - ans = 64'hBD2F7E 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"61060\n"); - end - FInput1E = 64'hC7EEFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9C00004000000000; - ans = 64'h000000 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"62061\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"63062\n"); - end - FInput1E = 64'h3F6FFFFF00000000; - FInput2E = 64'hFF7FFFB 00000000; - FInput3E = 64'h3FFFFFF700000000; - ans = 64'hC00000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"64063\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"65064\n"); - end - FInput1E = 64'hC7F0000000000000; - FInput2E = 64'h00000DE 00000000; - FInput3E = 64'h0101000000000000; - ans = 64'h000002 300000000; - flags = 5'h57; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57 "); - $fwrite(fp,"66065\n"); - end - FInput1E = 64'hC40FFFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"67066\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C3A250700000000; - ans = 64'hEF03B4 C00000000; - flags = 5'h01; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"01 "); - $fwrite(fp,"68067\n"); - end - FInput1E = 64'h38B001FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"69068\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h88A287EB00000000; - ans = 64'h310219 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"70069\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h36FFFF0000000000; - ans = 64'h000006 C00000000; - flags = 5'hE4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E4 "); - $fwrite(fp,"71070\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"72071\n"); - end - FInput1E = 64'hD07FFFDF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'h0FFEFFFF00000000; - ans = 64'hFDFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"73072\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h3C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3C "); - $fwrite(fp,"74073\n"); - end - FInput1E = 64'h001FFFC000000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'h3EFFF00000000000; - ans = 64'h007FFF 400000000; - flags = 5'h12; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12 "); - $fwrite(fp,"75074\n"); - end - FInput1E = 64'hC03A493600000000; - FInput2E = 64'h0ECAAA8 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"76075\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8100000000000000; - ans = 64'h4001FE 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"77076\n"); - end - FInput1E = 64'h000000FF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 600000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"78077\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hBD0001FF00000000; - ans = 64'h800000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"79078\n"); - end - FInput1E = 64'h3EB0000000000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h7E13577000000000; - ans = 64'h9EE4D3 900000000; - flags = 5'h88; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88 "); - $fwrite(fp,"80079\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"81080\n"); - end - FInput1E = 64'h403FFFFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h2500000000000000; - ans = 64'hFFE000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"82081\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"83082\n"); - end - FInput1E = 64'hBC00000000000000; - FInput2E = 64'h0880000 00000000; - FInput3E = 64'hFFFEFFFF00000000; - ans = 64'hFFDFFE B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"84083\n"); - end - FInput1E = 64'hC0193E1A00000000; - FInput2E = 64'hDC9C2C1 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"85084\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1E00000000000000; - ans = 64'h3FFFFC 400000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"86085\n"); - end - FInput1E = 64'hBFDFFF8000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"87086\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3F00020000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"88087\n"); - end - FInput1E = 64'h41B0000000000000; - FInput2E = 64'h01000FE 00000000; - FInput3E = 64'h7E00004000000000; - ans = 64'h001FFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"89088\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"90089\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h000807F 00000000; - FInput3E = 64'h1C01000000000000; - ans = 64'h01FFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"91090\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"92091\n"); - end - FInput1E = 64'h4F20040000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hC8FFFFFF00000000; - ans = 64'hE003FF 700000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"93092\n"); - end - FInput1E = 64'h4730040700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"94093\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h097FC20800000000; - ans = 64'hD276EC 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"95094\n"); - end - FInput1E = 64'hBFD0000F00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"96095\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE5FFFFFD00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"97096\n"); - end - FInput1E = 64'h3BDFFFFB00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'hEB00001000000000; - ans = 64'h100000 300000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"98097\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"99098\n"); - end - FInput1E = 64'h3FECB22500000000; - FInput2E = 64'hB3C633C 00000000; - FInput3E = 64'h0284F83B00000000; - ans = 64'hEC1ACC 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"100099\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h7D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7D "); - $fwrite(fp,"101100\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h800003FF00000000; - ans = 64'hF00000 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"102101\n"); - end - FInput1E = 64'h3518000000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"103102\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFECE9F1400000000; - ans = 64'hDDA85C C00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"104103\n"); - end - FInput1E = 64'h380FFFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"105104\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h89FFFFFC00000000; - ans = 64'h000FFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"106105\n"); - end - FInput1E = 64'hC7F000FF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFDE00 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"107106\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"108107\n"); - end - FInput1E = 64'hC054735300000000; - FInput2E = 64'hAA0CC74 00000000; - FInput3E = 64'hFDF7FFFF00000000; - ans = 64'hFFFFEF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"109108\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"110109\n"); - end - FInput1E = 64'h0007851400000000; - FInput2E = 64'h9E44B19 00000000; - FInput3E = 64'h1E5278FC00000000; - ans = 64'h9A7440 B00000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"111110\n"); - end - FInput1E = 64'hC1D9E68100000000; - FInput2E = 64'hAB5EE33 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"112111\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCBFFFFFE00000000; - ans = 64'h0000FF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"113112\n"); - end - FInput1E = 64'h434FFDFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"114113\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h9900000000000000; - ans = 64'h00017E 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"115114\n"); - end - FInput1E = 64'hC3D03FFF00000000; - FInput2E = 64'hFFFBFFF 00000000; - FInput3E = 64'hD9001FFF00000000; - ans = 64'hFF7FFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"116115\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"117116\n"); - end - FInput1E = 64'h4320000000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hFF266E6B00000000; - ans = 64'hAD2AB6 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"118117\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"119118\n"); - end - FInput1E = 64'hC5368F3500000000; - FInput2E = 64'h935254B 00000000; - FInput3E = 64'hFBFFC80000000000; - ans = 64'h000000 300000000; - flags = 5'h88; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88 "); - $fwrite(fp,"120119\n"); - end - FInput1E = 64'h030FBFFB00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"121120\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF4001FFF00000000; - ans = 64'hFFFFDF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"122121\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0008007 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E6 "); - $fwrite(fp,"123122\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'hFFFFF7 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"124123\n"); - end - FInput1E = 64'h4030000000000000; - FInput2E = 64'h0FFFFEF 00000000; - FInput3E = 64'hB900000000000000; - ans = 64'h100000 600000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"125124\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"126125\n"); - end - FInput1E = 64'hC805F3C500000000; - FInput2E = 64'h0E9247D 00000000; - FInput3E = 64'h07FFC00000000000; - ans = 64'h000002 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"127126\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hF6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F6 "); - $fwrite(fp,"128127\n"); - end - FInput1E = 64'hB800000000000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'hFD03FFFF00000000; - ans = 64'hFEFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"129128\n"); - end - FInput1E = 64'hBFDFFDFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"130129\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hA700010000000000; - ans = 64'h080000 300000000; - flags = 5'h33; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33 "); - $fwrite(fp,"131130\n"); - end - FInput1E = 64'h4190B84100000000; - FInput2E = 64'h370B70C 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"132131\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"133132\n"); - end - FInput1E = 64'h2E2FFFFB00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h0702000100000000; - ans = 64'h000000 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"134133\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"135134\n"); - end - FInput1E = 64'h3E2FFFF700000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0349588900000000; - ans = 64'h8B1248 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"136135\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"137136\n"); - end - FInput1E = 64'hBFF0080000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'hACFBB9EB00000000; - ans = 64'h50971A C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"138137\n"); - end - FInput1E = 64'hFFFBFFE000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"139138\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFBFF00000000; - ans = 64'hFFFDFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"140139\n"); - end - FInput1E = 64'h3CFD23DB00000000; - FInput2E = 64'h4A2F8E7 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'h94; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"94 "); - $fwrite(fp,"141140\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0755B2DE00000000; - ans = 64'h3762BF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"142141\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h03FFFFC 00000000; - FInput3E = 64'h1FBFFFC000000000; - ans = 64'h000000 300000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"143142\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"144143\n"); - end - FInput1E = 64'h434A8ED000000000; - FInput2E = 64'hDE57477 00000000; - FInput3E = 64'h30FFFFFF00000000; - ans = 64'hF00FFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"145144\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"146145\n"); - end - FInput1E = 64'h4021000F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA86982600000000; - ans = 64'h3052B0 C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"147146\n"); - end - FInput1E = 64'hB1CFE00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"148147\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1B00000000000000; - ans = 64'h03FFBF 100000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"149148\n"); - end - FInput1E = 64'hC3E00FFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 000000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"150149\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h12FFFFFF00000000; - ans = 64'hFFEFF8 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"151150\n"); - end - FInput1E = 64'h2FAFFFFF00000000; - FInput2E = 64'hFFFE7FF 00000000; - FInput3E = 64'h1FA9F28000000000; - ans = 64'hF56348 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"152151\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"153152\n"); - end - FInput1E = 64'hBE40400000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD8FFFFFF00000000; - ans = 64'hFFFEFB 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"154153\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"155154\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hFFFFFC0 00000000; - FInput3E = 64'h5C20000000000000; - ans = 64'h3FFFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"156155\n"); - end - FInput1E = 64'h41E6AE3000000000; - FInput2E = 64'h41CC98B 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"157156\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hB6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B6 "); - $fwrite(fp,"158157\n"); - end - FInput1E = 64'h3FC605FF00000000; - FInput2E = 64'hB8F99A0 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h0C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0C "); - $fwrite(fp,"159158\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD28559700000000; - ans = 64'h03A02D 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"160159\n"); - end - FInput1E = 64'hC132000000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'h1EC0000000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"161160\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"162161\n"); - end - FInput1E = 64'h3F201FFF00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'h1D00000100000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"163162\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h38; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38 "); - $fwrite(fp,"164163\n"); - end - FInput1E = 64'hC0303BFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF300000000000000; - ans = 64'h0077FF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"165164\n"); - end - FInput1E = 64'h400647A600000000; - FInput2E = 64'h8E203CA 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"166165\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE69CC7F00000000; - ans = 64'hCB1871 C00000000; - flags = 5'h45; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45 "); - $fwrite(fp,"167166\n"); - end - FInput1E = 64'h120FFFFF00000000; - FInput2E = 64'h8400000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"168167\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFFFBE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"169168\n"); - end - FInput1E = 64'hC01FFFBF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'h0200002000000000; - ans = 64'h0000FE C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"170169\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"171170\n"); - end - FInput1E = 64'h40350D3B00000000; - FInput2E = 64'h58A0A9B 00000000; - FInput3E = 64'h2F1FEFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"172171\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h93; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93 "); - $fwrite(fp,"173172\n"); - end - FInput1E = 64'h80DFFFFF00000000; - FInput2E = 64'hFFDFFEE 00000000; - FInput3E = 64'h7FDFFBFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"174173\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h4003FFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"175174\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD1D450800000000; - ans = 64'h67216A 400000000; - flags = 5'hE4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E4 "); - $fwrite(fp,"176175\n"); - end - FInput1E = 64'h3EFFBFFF00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"177176\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE40000000000000; - ans = 64'h002000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"178177\n"); - end - FInput1E = 64'h3F10000000000000; - FInput2E = 64'h05FFFFF 00000000; - FInput3E = 64'h01FFFE0000000000; - ans = 64'h00003F 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"179178\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"180179\n"); - end - FInput1E = 64'hB8000FF700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEADFFFFF00000000; - ans = 64'hFFFEFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"181180\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"182181\n"); - end - FInput1E = 64'h3FEFBFFF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hBD02000000000000; - ans = 64'h000000 300000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"183182\n"); - end - FInput1E = 64'hC1EE350700000000; - FInput2E = 64'h21BCF72 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"184183\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h016EDBD600000000; - ans = 64'h546093 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"185184\n"); - end - FInput1E = 64'hBFF0040000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"186185\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA5FE000000000000; - ans = 64'h000001 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"187186\n"); - end - FInput1E = 64'h3C10000000000000; - FInput2E = 64'h08003FE 00000000; - FInput3E = 64'h1EC7441000000000; - ans = 64'hFFA13D 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"188187\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"189188\n"); - end - FInput1E = 64'hC030000800000000; - FInput2E = 64'h0000FFE 00000000; - FInput3E = 64'h02FFF81F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"190189\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"191190\n"); - end - FInput1E = 64'h5211FFFF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFF806 400000000; - flags = 5'hC7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C7 "); - $fwrite(fp,"192191\n"); - end - FInput1E = 64'hB81FFF7F00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"193192\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03001FFF00000000; - ans = 64'hFFFFFC C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"194193\n"); - end - FInput1E = 64'hC341001F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"195194\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h07F800 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"196195\n"); - end - FInput1E = 64'hBFDA49FA00000000; - FInput2E = 64'h92E2122 00000000; - FInput3E = 64'h7E0007FF00000000; - ans = 64'hFFFFFB B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"197196\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"198197\n"); - end - FInput1E = 64'h43EDA34F00000000; - FInput2E = 64'h1A1EA79 00000000; - FInput3E = 64'hE582EC8C00000000; - ans = 64'hCBFD39 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"199198\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"200199\n"); - end - FInput1E = 64'h43DFFFFC00000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h7E0001FF00000000; - ans = 64'hFFF7FF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"201200\n"); - end - FInput1E = 64'hAA40400000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"202201\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000007F00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"203202\n"); - end - FInput1E = 64'hC1FE2C4F00000000; - FInput2E = 64'h1C978F7 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 100000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"204203\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F5A28FF00000000; - ans = 64'hA26FF2 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"205204\n"); - end - FInput1E = 64'h3FAFFFFE00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hFE0020 C00000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"206205\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"207206\n"); - end - FInput1E = 64'h40DFFFF700000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hBFFFDF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"208207\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"209208\n"); - end - FInput1E = 64'hC7E5C08600000000; - FInput2E = 64'hE73FCDB 00000000; - FInput3E = 64'h0101FFFF00000000; - ans = 64'hFFBFFF 400000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"210209\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFEFC0 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"211210\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h200000 C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"212211\n"); - end - FInput1E = 64'hC00A6CA100000000; - FInput2E = 64'hB1F1B0F 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"213212\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000800000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"214213\n"); - end - FInput1E = 64'h403D7FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0808000000000000; - ans = 64'h000000 B00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"215214\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"216215\n"); - end - FInput1E = 64'h47EFFFFF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'h0000FF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"217216\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"218217\n"); - end - FInput1E = 64'h3FF0400000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h0275DCB500000000; - ans = 64'h932C8A C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"219218\n"); - end - FInput1E = 64'hC03FFE0000000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"220219\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFAFFFFFF00000000; - ans = 64'hFEFFF7 C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"221220\n"); - end - FInput1E = 64'hBFD0FFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"222221\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h806ECBC700000000; - ans = 64'hE0C29C 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"223222\n"); - end - FInput1E = 64'hC03ADEEA00000000; - FInput2E = 64'hBF564AA 00000000; - FInput3E = 64'h76085DC800000000; - ans = 64'hC566A9 800000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"224223\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"225224\n"); - end - FInput1E = 64'h3FB0000000000000; - FInput2E = 64'h00003EF 00000000; - FInput3E = 64'h9D0037FF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"226225\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h65; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65 "); - $fwrite(fp,"227226\n"); - end - FInput1E = 64'hBCE7A0BC00000000; - FInput2E = 64'h9936A93 00000000; - FInput3E = 64'h0F3FFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"228227\n"); - end - FInput1E = 64'h47F1080000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"229228\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFD00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"230229\n"); - end - FInput1E = 64'hC008EE6C00000000; - FInput2E = 64'h19CC4F4 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"231230\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'h000002 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"232231\n"); - end - FInput1E = 64'h3F9DFFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h000003 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"233232\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"234233\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h003FFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"235234\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 E00000000; - flags = 5'h8A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8A "); - $fwrite(fp,"236235\n"); - end - FInput1E = 64'h4180000000000000; - FInput2E = 64'h0200001 00000000; - FInput3E = 64'h3CFFFF0000000000; - ans = 64'h000000 B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"237236\n"); - end - FInput1E = 64'hC7F0000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"238237\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hC900000000000000; - ans = 64'hFF8000 200000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"239238\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h0000102 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"240239\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h004EF3AD00000000; - ans = 64'h2D2AB0 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"241240\n"); - end - FInput1E = 64'h4B10000000000000; - FInput2E = 64'h0DFFFFE 00000000; - FInput3E = 64'hE500000000000000; - ans = 64'h000000 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"242241\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"243242\n"); - end - FInput1E = 64'h402FFFFD00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'h03C63BB800000000; - ans = 64'h2B2B77 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"244243\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'h1E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1E "); - $fwrite(fp,"245244\n"); - end - FInput1E = 64'h40614AEC00000000; - FInput2E = 64'h1E6620F 00000000; - FInput3E = 64'h4DE03FFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"246245\n"); - end - FInput1E = 64'hC29FF7FD00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"247246\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h5CFFBFFF00000000; - ans = 64'hFFEFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"248247\n"); - end - FInput1E = 64'hC5DFFFF800000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"249248\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0298BB3A00000000; - ans = 64'hE7AAF0 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"250249\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h1CFEFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"251250\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"252251\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFAF 00000000; - FInput3E = 64'hFF00010000000000; - ans = 64'h00000F 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"253252\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"254253\n"); - end - FInput1E = 64'h381FFFFF00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'h4A00001000000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"255254\n"); - end - FInput1E = 64'hAF50000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"256255\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB80B1E300000000; - ans = 64'h6676A5 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"257256\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFF01E 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"258257\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2200000000000000; - ans = 64'h1EFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"259258\n"); - end - FInput1E = 64'hBFA3CE7600000000; - FInput2E = 64'h882FBA6 00000000; - FInput3E = 64'h2000040000000000; - ans = 64'h7FFFFE 400000000; - flags = 5'hD7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D7 "); - $fwrite(fp,"260259\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"261260\n"); - end - FInput1E = 64'h8024354E00000000; - FInput2E = 64'hC11ACCB 00000000; - FInput3E = 64'hD080000100000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"262261\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"263262\n"); - end - FInput1E = 64'hC100004000000000; - FInput2E = 64'h0007FFF 00000000; - FInput3E = 64'h07FFF7C000000000; - ans = 64'h000000 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"264263\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h005FFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"265264\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h000FF6 C00000000; - flags = 5'hA6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A6 "); - $fwrite(fp,"266265\n"); - end - FInput1E = 64'h3E70800000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"267266\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2DFFFFFB00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"268267\n"); - end - FInput1E = 64'hC1DF800000000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'hFE24A74000000000; - ans = 64'h81D5BD 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"269268\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"270269\n"); - end - FInput1E = 64'h4790002F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h40007F 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"271270\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"272271\n"); - end - FInput1E = 64'hB3FFFFB800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3FFF000F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"273272\n"); - end - FInput1E = 64'h3FDFFDFB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"274273\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h80E0000000000000; - ans = 64'h000200 400000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"275274\n"); - end - FInput1E = 64'hC1F003F800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 500000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"276275\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000001000000000; - ans = 64'h7FFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"277276\n"); - end - FInput1E = 64'h3FE0040000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB7000FFF00000000; - ans = 64'hFFFF80 400000000; - flags = 5'h09; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"09 "); - $fwrite(fp,"278277\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"279278\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h000801E 00000000; - FInput3E = 64'h3F1CB8D900000000; - ans = 64'hB996FA 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"280279\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"281280\n"); - end - FInput1E = 64'hC010040F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB05C0BC800000000; - ans = 64'h87C491 B00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"282281\n"); - end - FInput1E = 64'h408FFFFF00000000; - FInput2E = 64'hDFFFFE0 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"283282\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hAA41F6DD00000000; - ans = 64'h742842 200000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"284283\n"); - end - FInput1E = 64'hE43FFFE000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"285284\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hFFFFD0 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"286285\n"); - end - FInput1E = 64'h3F103FFF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hF8FFC00000000000; - ans = 64'h3FFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"287286\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"288287\n"); - end - FInput1E = 64'h403DFFFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hFCFEFFFF00000000; - ans = 64'hFFFC00 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"289288\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"290289\n"); - end - FInput1E = 64'h43C5FF9700000000; - FInput2E = 64'hD8D4F14 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFF000 B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"291290\n"); - end - FInput1E = 64'h3F40000800000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"292291\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0006DA0D00000000; - ans = 64'h1EC469 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"293292\n"); - end - FInput1E = 64'hB7FFFFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"294293\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCCBFFFFF00000000; - ans = 64'hF7FFFE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"295294\n"); - end - FInput1E = 64'h8020200000000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'h07F1DC9400000000; - ans = 64'hC8010E 400000000; - flags = 5'h29; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"29 "); - $fwrite(fp,"296295\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"297296\n"); - end - FInput1E = 64'hBFA2410C00000000; - FInput2E = 64'h215BE5E 00000000; - FInput3E = 64'h1E00000700000000; - ans = 64'hFFF7FF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"298297\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"299298\n"); - end - FInput1E = 64'hC02FFFEF00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h0EFFFF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"300299\n"); - end - FInput1E = 64'hC00F840000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"301300\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3100000800000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"302301\n"); - end - FInput1E = 64'h402FFFFF00000000; - FInput2E = 64'hBF00000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"303302\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFDFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"304303\n"); - end - FInput1E = 64'h4080000000000000; - FInput2E = 64'h7FFFEFE 00000000; - FInput3E = 64'h80FE000000000000; - ans = 64'h000004 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"305304\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"306305\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hEFFDFFF 00000000; - FInput3E = 64'h34FFFF0000000000; - ans = 64'h0000FF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"307306\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 E00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"308307\n"); - end - FInput1E = 64'h37FE000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h91007FFF00000000; - ans = 64'hFFFDFF C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"309308\n"); - end - FInput1E = 64'hFFDF000000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"310309\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFEFFFF00000000; - ans = 64'hC00000 300000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"311310\n"); - end - FInput1E = 64'h46EF5ED900000000; - FInput2E = 64'h9F5ECFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"312311\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB700001000000000; - ans = 64'h1FFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"313312\n"); - end - FInput1E = 64'h41FFF8FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h61FFFFFF00000000; - ans = 64'hFFF000 300000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"314313\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"315314\n"); - end - FInput1E = 64'hC00FFEFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h02FF000000000000; - ans = 64'h0001FF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"316315\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"317316\n"); - end - FInput1E = 64'h0022000000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFFFDE 800000000; - flags = 5'h2C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2C "); - $fwrite(fp,"318317\n"); - end - FInput1E = 64'h3FDF800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"319318\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEC2F80600000000; - ans = 64'h66F957 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"320319\n"); - end - FInput1E = 64'hC3D3E90E00000000; - FInput2E = 64'hA31655A 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"321320\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFBFFD00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"322321\n"); - end - FInput1E = 64'h43F0FFFE00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hED00000000000000; - ans = 64'h00000D 200000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"323322\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"324323\n"); - end - FInput1E = 64'h8B607FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34EFFFFF00000000; - ans = 64'hFFFE00 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"325324\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"326325\n"); - end - FInput1E = 64'hBFFEFFFF00000000; - FInput2E = 64'hFFFFF80 00000000; - FInput3E = 64'h491B0F3E00000000; - ans = 64'h76A8DD 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"327326\n"); - end - FInput1E = 64'h41D87D0600000000; - FInput2E = 64'h6A3CE52 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"328327\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA003FFF00000000; - ans = 64'hFFFFF7 B00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"329328\n"); - end - FInput1E = 64'h37FC000000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 200000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"330329\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1A00000000000000; - ans = 64'h01FFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"331330\n"); - end - FInput1E = 64'h44C9E97C00000000; - FInput2E = 64'h98DC227 00000000; - FInput3E = 64'h00F61D9400000000; - ans = 64'hEEB869 400000000; - flags = 5'hF1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F1 "); - $fwrite(fp,"332331\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"333332\n"); - end - FInput1E = 64'h0014000000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h7EFFFFF700000000; - ans = 64'hFFF800 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"334333\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"335334\n"); - end - FInput1E = 64'hBFEFFFFB00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'h7E2D8B9200000000; - ans = 64'hDA6DAD 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"336335\n"); - end - FInput1E = 64'h770DFFFF00000000; - FInput2E = 64'hFFFFF00 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"337336\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E00004000000000; - ans = 64'h003FFE C00000000; - flags = 5'hC1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C1 "); - $fwrite(fp,"338337\n"); - end - FInput1E = 64'hB7E5A59900000000; - FInput2E = 64'hB66A2A6 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"339338\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E3FFFFF00000000; - ans = 64'hFFFFF7 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"340339\n"); - end - FInput1E = 64'hC710080000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'h3D268CE300000000; - ans = 64'hBFBD9B 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"341340\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"342341\n"); - end - FInput1E = 64'h40603FFF00000000; - FInput2E = 64'hF7FFFFE 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hFFF7FE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"343342\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF D00000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"344343\n"); - end - FInput1E = 64'hBFE01FFF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'hBA1FFFFF00000000; - ans = 64'hFFFFFC 400000000; - flags = 5'h55; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55 "); - $fwrite(fp,"345344\n"); - end - FInput1E = 64'hB7F4000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"346345\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFFC800 A00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"347346\n"); - end - FInput1E = 64'h5C10CDC300000000; - FInput2E = 64'h985FE13 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"348347\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFFC08 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"349348\n"); - end - FInput1E = 64'h3CAFFC0000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'hFFCAE3D400000000; - ans = 64'h7AF457 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"350349\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"351350\n"); - end - FInput1E = 64'h3FAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00FFFF00000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"352351\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"353352\n"); - end - FInput1E = 64'h3F3FFFFF00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'hD7FFDFFF00000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"354353\n"); - end - FInput1E = 64'h7FD0000000000000; - FInput2E = 64'h0000401 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"355354\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h8001FF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"356355\n"); - end - FInput1E = 64'h5C2FE00300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E5 "); - $fwrite(fp,"357356\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3CF7FFFF00000000; - ans = 64'hFFBFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"358357\n"); - end - FInput1E = 64'h4030000400000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1F00200000000000; - ans = 64'h01FFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"359358\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"360359\n"); - end - FInput1E = 64'hCA90000100000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'hFD03FFFF00000000; - ans = 64'hFF8000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"361360\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h9C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9C "); - $fwrite(fp,"362361\n"); - end - FInput1E = 64'h3FEFFFF700000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'h00066B8300000000; - ans = 64'hFB3475 500000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"363362\n"); - end - FInput1E = 64'hBFA0100000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"364363\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7801FFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"365364\n"); - end - FInput1E = 64'hC015FCF300000000; - FInput2E = 64'h30061EA 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hF9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F9 "); - $fwrite(fp,"366365\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h011FFFFF00000000; - ans = 64'h800000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"367366\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h06FFFFFF00000000; - ans = 64'h00001F 300000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"368367\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"369368\n"); - end - FInput1E = 64'h3800000000000000; - FInput2E = 64'h0001DFE 00000000; - FInput3E = 64'h053FBCE900000000; - ans = 64'hD147A7 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"370369\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"371370\n"); - end - FInput1E = 64'h4E2FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h60FC000000000000; - ans = 64'h000000 C00000000; - flags = 5'h09; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"09 "); - $fwrite(fp,"372371\n"); - end - FInput1E = 64'hBF5FFFBF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"373372\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01527C5100000000; - ans = 64'hFACABD C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"374373\n"); - end - FInput1E = 64'h37FFFFBF00000000; - FInput2E = 64'hFFFF800 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 A00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"375374\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF93FFFFF00000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"376375\n"); - end - FInput1E = 64'h3720000100000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'hD400000000000000; - ans = 64'h1FEFFF 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"377376\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"378377\n"); - end - FInput1E = 64'hBBFFFFFF00000000; - FInput2E = 64'hFFF77FF 00000000; - FInput3E = 64'h7F003F8000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"379378\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"380379\n"); - end - FInput1E = 64'hC3FFFFFF00000000; - FInput2E = 64'hFFFE1FF 00000000; - FInput3E = 64'hFCBDFA4D00000000; - ans = 64'hD951B6 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"381380\n"); - end - FInput1E = 64'h437FF80000000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"382381\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3F08000000000000; - ans = 64'h007FFF 300000000; - flags = 5'h63; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63 "); - $fwrite(fp,"383382\n"); - end - FInput1E = 64'hC3FFFBFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h57; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57 "); - $fwrite(fp,"384383\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hEDFFFFFF00000000; - ans = 64'hFD0000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"385384\n"); - end - FInput1E = 64'h4000A40E00000000; - FInput2E = 64'h69220D4 00000000; - FInput3E = 64'hFDE0000000000000; - ans = 64'h007FFF D00000000; - flags = 5'h2E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2E "); - $fwrite(fp,"386385\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"387386\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hFF01FFF 00000000; - FInput3E = 64'h0100000300000000; - ans = 64'hFFFFF7 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"388387\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hB8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B8 "); - $fwrite(fp,"389388\n"); - end - FInput1E = 64'hC7FFFF8000000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'hFDFFEFFF00000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"390389\n"); - end - FInput1E = 64'hC7EFFFFF00000000; - FInput2E = 64'h8400000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"391390\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFE100000000; - ans = 64'h000000 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"392391\n"); - end - FInput1E = 64'h4AA007FF00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"393392\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h12FFEFFF00000000; - ans = 64'hFFFFF7 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"394393\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFF87FE 00000000; - FInput3E = 64'h1E4FB51200000000; - ans = 64'h07AB11 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"395394\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"396395\n"); - end - FInput1E = 64'h43D0000000000000; - FInput2E = 64'h4000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h080FFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"397396\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"398397\n"); - end - FInput1E = 64'hBCAE42FE00000000; - FInput2E = 64'h27E8D0E 00000000; - FInput3E = 64'hFE08004000000000; - ans = 64'h000000 400000000; - flags = 5'hE4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E4 "); - $fwrite(fp,"399398\n"); - end - FInput1E = 64'h2090020100000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"400399\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hFB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FB "); - $fwrite(fp,"401400\n"); - end - FInput1E = 64'hB7EFF80000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"402401\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0150980F00000000; - ans = 64'h04928D C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"403402\n"); - end - FInput1E = 64'h4C3FFFFF00000000; - FInput2E = 64'hE00007F 00000000; - FInput3E = 64'hFC26D29800000000; - ans = 64'hBC97D7 B00000000; - flags = 5'h0D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0D "); - $fwrite(fp,"404403\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"405404\n"); - end - FInput1E = 64'hDF1048DE00000000; - FInput2E = 64'h071E620 00000000; - FInput3E = 64'h3DDFFFE000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"406405\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E9 "); - $fwrite(fp,"407406\n"); - end - FInput1E = 64'h463FFF7F00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hDFFFFFFF00000000; - ans = 64'hBFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"408407\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0023FFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"409408\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFBC11BBE00000000; - ans = 64'h93B009 C00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"410409\n"); - end - FInput1E = 64'hC5B3D10800000000; - FInput2E = 64'h4419266 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h55; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55 "); - $fwrite(fp,"411410\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h12FE07FF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"412411\n"); - end - FInput1E = 64'h3FB0003800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0DFFFFF700000000; - ans = 64'hFFFFE0 300000000; - flags = 5'hB5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B5 "); - $fwrite(fp,"413412\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"414413\n"); - end - FInput1E = 64'hC340000700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h35C6340100000000; - ans = 64'hF9AB0B F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"415414\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"416415\n"); - end - FInput1E = 64'hA95B5C1B00000000; - FInput2E = 64'h7705126 00000000; - FInput3E = 64'h26FFFFFF00000000; - ans = 64'hFFEEFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"417416\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hF81FFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"418417\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h030000FF00000000; - ans = 64'hFFFBFF 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"419418\n"); - end - FInput1E = 64'hC1D0400000000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h05; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"05 "); - $fwrite(fp,"420419\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h23FFFE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"421420\n"); - end - FInput1E = 64'h401FFFFE00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'hA933632100000000; - ans = 64'h9DC07D 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"422421\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"423422\n"); - end - FInput1E = 64'h3290120000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8140000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"424423\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"425424\n"); - end - FInput1E = 64'hC79FF80000000000; - FInput2E = 64'h3FFFFFE 00000000; - FInput3E = 64'hFEFFC00000000000; - ans = 64'h003FFE 200000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"426425\n"); - end - FInput1E = 64'hFFE2000000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"427426\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h6123071B00000000; - ans = 64'h3EE3A7 300000000; - flags = 5'hD6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D6 "); - $fwrite(fp,"428427\n"); - end - FInput1E = 64'h43D0000000000000; - FInput2E = 64'h4000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"429428\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF801000000000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"430429\n"); - end - FInput1E = 64'h3EAFFE0000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00210000000000; - ans = 64'h000000 800000000; - flags = 5'h2C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2C "); - $fwrite(fp,"431430\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"432431\n"); - end - FInput1E = 64'hC69DFF9D00000000; - FInput2E = 64'h3FF789B 00000000; - FInput3E = 64'hD5FFE00000000000; - ans = 64'h01FFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"433432\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'h73; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"73 "); - $fwrite(fp,"434433\n"); - end - FInput1E = 64'h514E752E00000000; - FInput2E = 64'h33774C5 00000000; - FInput3E = 64'hEE00000000000000; - ans = 64'h03FEFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"435434\n"); - end - FInput1E = 64'hFFEFFFFE00000000; - FInput2E = 64'hFC00000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"436435\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB4FFFFFE00000000; - ans = 64'h00007F 200000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"437436\n"); - end - FInput1E = 64'hB3487BE000000000; - FInput2E = 64'hCEE8E38 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 900000000; - flags = 5'h91; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91 "); - $fwrite(fp,"438437\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFEF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"439438\n"); - end - FInput1E = 64'h37FF7FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h6D00000000000000; - ans = 64'h00005E E00000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"440439\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"441440\n"); - end - FInput1E = 64'h3800000000000000; - FInput2E = 64'h1FFFBFE 00000000; - FInput3E = 64'h0588413700000000; - ans = 64'hB29E76 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"442441\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"443442\n"); - end - FInput1E = 64'hC004BC4F00000000; - FInput2E = 64'h261BFA2 00000000; - FInput3E = 64'h035B7D0000000000; - ans = 64'hC15E18 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"444443\n"); - end - FInput1E = 64'h3FB07FFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"445444\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h02D5E7E000000000; - ans = 64'h11C3D4 600000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"446445\n"); - end - FInput1E = 64'h3930010000000000; - FInput2E = 64'h0000010 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"447446\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h09FFFDFF00000000; - ans = 64'hFFFFEF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"448447\n"); - end - FInput1E = 64'h3F1FFFEF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hEC0F20FE00000000; - ans = 64'hE84CF5 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"449448\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"450449\n"); - end - FInput1E = 64'hBFFFDFFF00000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'h0500000F00000000; - ans = 64'hFFFDFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"451450\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF D00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"452451\n"); - end - FInput1E = 64'h3FBBFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD8223DF00000000; - ans = 64'h4E66AA B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"453452\n"); - end - FInput1E = 64'h400FFFBF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"454453\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFC00000000; - ans = 64'h03FFFF 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"455454\n"); - end - FInput1E = 64'h37E2000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"456455\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF13FFFFF00000000; - ans = 64'hFFFBFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"457456\n"); - end - FInput1E = 64'hC040020F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE03FFFFC00000000; - ans = 64'h000000 B00000000; - flags = 5'h54; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54 "); - $fwrite(fp,"458457\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"459458\n"); - end - FInput1E = 64'h402FEFFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hF81FFF8000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"460459\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"461460\n"); - end - FInput1E = 64'hC0501FFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h11FFFFEF00000000; - ans = 64'hFFFFBF E00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"462461\n"); - end - FInput1E = 64'hC00FEFFF00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"463462\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEE0000000000000; - ans = 64'h800000 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"464463\n"); - end - FInput1E = 64'hBF90000000000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h17; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17 "); - $fwrite(fp,"465464\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFF00000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"466465\n"); - end - FInput1E = 64'hB804408D00000000; - FInput2E = 64'hCE1D2D2 00000000; - FInput3E = 64'hFE003FFF00000000; - ans = 64'hFFFFBE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"467466\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"468467\n"); - end - FInput1E = 64'h801FFF7000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h63BFFFFF00000000; - ans = 64'hFEFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"469468\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"470469\n"); - end - FInput1E = 64'hC3E047FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0427774B00000000; - ans = 64'hE47523 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"471470\n"); - end - FInput1E = 64'hC033480700000000; - FInput2E = 64'hCDBCF85 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"472471\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0DB0882300000000; - ans = 64'h1E5772 F00000000; - flags = 5'hF6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F6 "); - $fwrite(fp,"473472\n"); - end - FInput1E = 64'hC1E134C500000000; - FInput2E = 64'h12D6668 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"474473\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CE131B500000000; - ans = 64'h9F79B7 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"475474\n"); - end - FInput1E = 64'hB160000000000000; - FInput2E = 64'h0060000 00000000; - FInput3E = 64'h01DAE63A00000000; - ans = 64'h50B974 C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"476475\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"477476\n"); - end - FInput1E = 64'hBDB1000800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3EFDFFFF00000000; - ans = 64'hEFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"478477\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"479478\n"); - end - FInput1E = 64'h43CD7DDF00000000; - FInput2E = 64'h2A8CBE0 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h00087E 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"480479\n"); - end - FInput1E = 64'hC13FFFFE00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"481480\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h31FFFFFF00000000; - ans = 64'hBFFEFF C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"482481\n"); - end - FInput1E = 64'hB7EFFFFF00000000; - FInput2E = 64'hEFFFFFB 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"483482\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000F00000000; - ans = 64'hFFBFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"484483\n"); - end - FInput1E = 64'h4360008000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'hEDFFFF0000000000; - ans = 64'h000100 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"485484\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"486485\n"); - end - FInput1E = 64'h497FFFFF00000000; - FInput2E = 64'hF87FFFF 00000000; - FInput3E = 64'h9F87991300000000; - ans = 64'hCA1E93 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"487486\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"488487\n"); - end - FInput1E = 64'hC66FFFFF00000000; - FInput2E = 64'h7FFFFDF 00000000; - FInput3E = 64'h010000C000000000; - ans = 64'h000000 C00000000; - flags = 5'hAE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AE "); - $fwrite(fp,"489488\n"); - end - FInput1E = 64'hC02FFFFB00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"490489\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFC00001000000000; - ans = 64'h00007F 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"491490\n"); - end - FInput1E = 64'h4064185100000000; - FInput2E = 64'h9B89C12 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"492491\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D7545C900000000; - ans = 64'h594931 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"493492\n"); - end - FInput1E = 64'hC130000000000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hD9CA8B3D00000000; - ans = 64'hE093AF B00000000; - flags = 5'hFB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FB "); - $fwrite(fp,"494493\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"495494\n"); - end - FInput1E = 64'h2FB00FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03F686FE00000000; - ans = 64'h0628E9 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"496495\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"497496\n"); - end - FInput1E = 64'hC0A0000000000000; - FInput2E = 64'h0FFFFFD 00000000; - FInput3E = 64'h3F39AFB000000000; - ans = 64'hFAD8D9 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"498497\n"); - end - FInput1E = 64'h41D896B200000000; - FInput2E = 64'h558F7D3 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"499498\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1400803F00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'hB7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B7 "); - $fwrite(fp,"500499\n"); - end - FInput1E = 64'hB810000000000000; - FInput2E = 64'hFFFFFBF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"501500\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D24080A00000000; - ans = 64'h957D44 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"502501\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'h6287767100000000; - ans = 64'hF7A5FD C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"503502\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"504503\n"); - end - FInput1E = 64'hC7F0000000000000; - FInput2E = 64'h0007F7F 00000000; - FInput3E = 64'hFC00200000000000; - ans = 64'h00000F B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"505504\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"506505\n"); - end - FInput1E = 64'hFFEE3FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB00200000000000; - ans = 64'h00FFFF 400000000; - flags = 5'hE7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E7 "); - $fwrite(fp,"507506\n"); - end - FInput1E = 64'hC03C6ADB00000000; - FInput2E = 64'h9BF99BA 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"508507\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF9FFFFFF00000000; - ans = 64'hFDFFF7 C00000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"509508\n"); - end - FInput1E = 64'h416FFFFF00000000; - FInput2E = 64'hFEFFFBF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"510509\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F24D5AB00000000; - ans = 64'h56A206 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"511510\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFE003FE 00000000; - FInput3E = 64'hFBFFFEFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"512511\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"513512\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h07EFFFE 00000000; - FInput3E = 64'hF9D9F73300000000; - ans = 64'h8F7266 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"514513\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h71; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71 "); - $fwrite(fp,"515514\n"); - end - FInput1E = 64'hCA1C235A00000000; - FInput2E = 64'h6399896 00000000; - FInput3E = 64'h2900000B00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h1E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1E "); - $fwrite(fp,"516515\n"); - end - FInput1E = 64'hD16FF80000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"517516\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDF8000000000000; - ans = 64'h00001F C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"518517\n"); - end - FInput1E = 64'hD10FFFFF00000000; - FInput2E = 64'hFF3FFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"519518\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1B02002000000000; - ans = 64'h000000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"520519\n"); - end - FInput1E = 64'h4800100000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hDFFFFF D00000000; - flags = 5'h04; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"04 "); - $fwrite(fp,"521520\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"522521\n"); - end - FInput1E = 64'hBFF3724D00000000; - FInput2E = 64'h42AE9BA 00000000; - FInput3E = 64'hFFFFF00100000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"523522\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'h47; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"47 "); - $fwrite(fp,"524523\n"); - end - FInput1E = 64'hC80F800000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h6FDCD84900000000; - ans = 64'hBF1991 F00000000; - flags = 5'hDA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DA "); - $fwrite(fp,"525524\n"); - end - FInput1E = 64'h000E000000000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"526525\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200020000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"527526\n"); - end - FInput1E = 64'hC0203FFF00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"528527\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFFF700000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"529528\n"); - end - FInput1E = 64'h680FFFDF00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h0105A57800000000; - ans = 64'h31ABB7 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"530529\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"531530\n"); - end - FInput1E = 64'h41F0000000000000; - FInput2E = 64'h000040F 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'hFFFFC0 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"532531\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"533532\n"); - end - FInput1E = 64'hBE9FFFFF00000000; - FInput2E = 64'hFFFDFF6 00000000; - FInput3E = 64'hFEADE71100000000; - ans = 64'hEE6384 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"534533\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"535534\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEB3A8D800000000; - ans = 64'h3A7B01 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"536535\n"); - end - FInput1E = 64'h4070000000000000; - FInput2E = 64'h0000807 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hB2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B2 "); - $fwrite(fp,"537536\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3D04DC2B00000000; - ans = 64'hBBF826 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"538537\n"); - end - FInput1E = 64'h381FFFFD00000000; - FInput2E = 64'hFFFFFF8 00000000; - FInput3E = 64'h7FFFFF0000000000; - ans = 64'h000006 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"539538\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"540539\n"); - end - FInput1E = 64'h2178D59F00000000; - FInput2E = 64'hFA12547 00000000; - FInput3E = 64'hFD07FFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"541540\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"542541\n"); - end - FInput1E = 64'h4802000000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h3EFC000000000000; - ans = 64'h00003E 300000000; - flags = 5'h91; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91 "); - $fwrite(fp,"543542\n"); - end - FInput1E = 64'h32FDCD3800000000; - FInput2E = 64'h18F9829 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"544543\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDE0000000000000; - ans = 64'h000007 300000000; - flags = 5'hBE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BE "); - $fwrite(fp,"545544\n"); - end - FInput1E = 64'h3FC64FB900000000; - FInput2E = 64'h0227052 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h97; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97 "); - $fwrite(fp,"546545\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFEFFFF00000000; - ans = 64'hFFFDFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"547546\n"); - end - FInput1E = 64'h424FEBA300000000; - FInput2E = 64'hF4E9A81 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h000FFD C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"548547\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"549548\n"); - end - FInput1E = 64'hC34FFFFD00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h8F00000000000000; - ans = 64'h01FFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"550549\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h01; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"01 "); - $fwrite(fp,"551550\n"); - end - FInput1E = 64'hC00C595800000000; - FInput2E = 64'h755420D 00000000; - FInput3E = 64'h9A00BFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"552551\n"); - end - FInput1E = 64'h442FF9FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"553552\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h6E80000000000000; - ans = 64'h0FFFFF 400000000; - flags = 5'hC7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C7 "); - $fwrite(fp,"554553\n"); - end - FInput1E = 64'hC1F211E100000000; - FInput2E = 64'hE88B1A6 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"555554\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3CFF800700000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"556555\n"); - end - FInput1E = 64'hD680000000000000; - FInput2E = 64'h000FEFE 00000000; - FInput3E = 64'h34F77FFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"557556\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"558557\n"); - end - FInput1E = 64'hBFCFF80000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h02DFFFFF00000000; - ans = 64'hFF7FFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"559558\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"560559\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h000EFFF 00000000; - FInput3E = 64'hFB07316900000000; - ans = 64'h80BB12 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"561560\n"); - end - FInput1E = 64'h3FBFFEFF00000000; - FInput2E = 64'hFFFFFF6 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"562561\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0B00100000000000; - ans = 64'h0FFFFF 800000000; - flags = 5'hC1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C1 "); - $fwrite(fp,"563562\n"); - end - FInput1E = 64'h40280FB200000000; - FInput2E = 64'h2B912BE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"564563\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEBCAD0100000000; - ans = 64'h83FEC0 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"565564\n"); - end - FInput1E = 64'hC1FFFFC000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'hFC92432A00000000; - ans = 64'hB9A3BF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"566565\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"567566\n"); - end - FInput1E = 64'hBB283AD300000000; - FInput2E = 64'hEE579BD 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFF77FF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"568567\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"569568\n"); - end - FInput1E = 64'h4344A9AB00000000; - FInput2E = 64'h20D71B8 00000000; - FInput3E = 64'h038AAE8E00000000; - ans = 64'h82D3F5 400000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"570569\n"); - end - FInput1E = 64'hC3DFFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"571570\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03003FFF00000000; - ans = 64'hEFFFFF 700000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"572571\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFEF0 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"573572\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34F0000000000000; - ans = 64'h000007 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"574573\n"); - end - FInput1E = 64'hC1B0004000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hFFFEFF 300000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"575574\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"576575\n"); - end - FInput1E = 64'hC34F24B400000000; - FInput2E = 64'hD2AF3E7 00000000; - FInput3E = 64'hFEF7FE0000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"577576\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hDC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DC "); - $fwrite(fp,"578577\n"); - end - FInput1E = 64'h4170000100000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFE7FF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"579578\n"); - end - FInput1E = 64'h40900FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"580579\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3D00003F00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"581580\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"582581\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02EEC25300000000; - ans = 64'h787020 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"583582\n"); - end - FInput1E = 64'h380FFFFF00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h7FFFEFFF00000000; - ans = 64'hFFFEFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"584583\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"585584\n"); - end - FInput1E = 64'hBCA013FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFFFF60 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"586585\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hE5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E5 "); - $fwrite(fp,"587586\n"); - end - FInput1E = 64'h4030E1A500000000; - FInput2E = 64'hFFE4269 00000000; - FInput3E = 64'h1E000FFF00000000; - ans = 64'hFFFDFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"588587\n"); - end - FInput1E = 64'h2D60000000000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"589588\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h81FFFFDF00000000; - ans = 64'hFFFFFD B00000000; - flags = 5'h99; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"99 "); - $fwrite(fp,"590589\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"591590\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3D6B36D400000000; - ans = 64'h53FA85 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"592591\n"); - end - FInput1E = 64'h7FDFFFFF00000000; - FInput2E = 64'hF8000FF 00000000; - FInput3E = 64'h3F01000000000000; - ans = 64'h000002 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"593592\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"594593\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h34AF5FFE00000000; - ans = 64'h99676E 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"595594\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"596595\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'h7BFFFFF 00000000; - FInput3E = 64'h0207FFF700000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"597596\n"); - end - FInput1E = 64'h43EFFFFC00000000; - FInput2E = 64'h2000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"598597\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF003FFF00000000; - ans = 64'hFFFFFB 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"599598\n"); - end - FInput1E = 64'h67AE000200000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"600599\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0E0001FD00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"601600\n"); - end - FInput1E = 64'h406FC00800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h4797F9BE00000000; - ans = 64'h0355F0 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"602601\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"603602\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFC40000 00000000; - FInput3E = 64'hDAFFFDFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"604603\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"605604\n"); - end - FInput1E = 64'hB8AFFBFF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h9400001F00000000; - ans = 64'hFFFFE0 C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"606605\n"); - end - FInput1E = 64'h7FFFC07F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"607606\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF9FFFFFF00000000; - ans = 64'hFF3FFF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"608607\n"); - end - FInput1E = 64'h3F0EFFFF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"609608\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h010001 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"610609\n"); - end - FInput1E = 64'hC1EDC35200000000; - FInput2E = 64'h12F4EE3 00000000; - FInput3E = 64'h3D7E5DDF00000000; - ans = 64'h2DDFAE C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"611610\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"612611\n"); - end - FInput1E = 64'hA333A1B800000000; - FInput2E = 64'h786C499 00000000; - FInput3E = 64'hE6FFFFF000000000; - ans = 64'h7FFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"613612\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"614613\n"); - end - FInput1E = 64'h410FFFFF00000000; - FInput2E = 64'hFF7F7FF 00000000; - FInput3E = 64'hF8E35FC100000000; - ans = 64'hECFFB6 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"615614\n"); - end - FInput1E = 64'hF25FFFFF00000000; - FInput2E = 64'hE400000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"616615\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6BFFC00000000000; - ans = 64'h400000 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"617616\n"); - end - FInput1E = 64'h43CFFFFD00000000; - FInput2E = 64'hBFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 B00000000; - flags = 5'hBB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BB "); - $fwrite(fp,"618617\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA5B733D00000000; - ans = 64'h714FE7 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"619618\n"); - end - FInput1E = 64'hB80043B300000000; - FInput2E = 64'hC3E003E 00000000; - FInput3E = 64'h34FEFFFF00000000; - ans = 64'hFFFF7E C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"620619\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"621620\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'h92FFFFFF00000000; - ans = 64'hFFC200 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"622621\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hBD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BD "); - $fwrite(fp,"623622\n"); - end - FInput1E = 64'h3FBFFDFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0004FE 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"624623\n"); - end - FInput1E = 64'hBF70000000000000; - FInput2E = 64'h100007F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"625624\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03FFFFDF00000000; - ans = 64'hFFFF80 A00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"626625\n"); - end - FInput1E = 64'hC7ED65E000000000; - FInput2E = 64'hA485D7D 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"627626\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF608000000000000; - ans = 64'h0001FF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"628627\n"); - end - FInput1E = 64'h4000000700000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h3D00000000000000; - ans = 64'h041FFF 400000000; - flags = 5'hE7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E7 "); - $fwrite(fp,"629628\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"630629\n"); - end - FInput1E = 64'hB7FFFE0000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'hFD00002000000000; - ans = 64'h0001FF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"631630\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"632631\n"); - end - FInput1E = 64'hC190C9D400000000; - FInput2E = 64'h8458B3E 00000000; - FInput3E = 64'h800800FF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"633632\n"); - end - FInput1E = 64'h3FCFFF8000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"634633\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD1AE95400000000; - ans = 64'h86257E 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"635634\n"); - end - FInput1E = 64'h3B4003FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"636635\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3FFBFFFE00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"637636\n"); - end - FInput1E = 64'hB0C0100000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1600000000000000; - ans = 64'hE00000 800000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"638637\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"639638\n"); - end - FInput1E = 64'h4075445600000000; - FInput2E = 64'h3838051 00000000; - FInput3E = 64'hFBEFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"640639\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"641640\n"); - end - FInput1E = 64'h3FC0000200000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h10FFF00000000000; - ans = 64'h0000FF 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"642641\n"); - end - FInput1E = 64'hC02FFF8100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"643642\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4500000000000000; - ans = 64'h003FFF B00000000; - flags = 5'hD9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D9 "); - $fwrite(fp,"644643\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'h8000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 500000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"645644\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h16FDC00000000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"646645\n"); - end - FInput1E = 64'hC1EFFFFF00000000; - FInput2E = 64'hFFFFAFE 00000000; - FInput3E = 64'hFD0000FF00000000; - ans = 64'hFBFFFE C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"647646\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"648647\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFC00000 00000000; - FInput3E = 64'h3E0003FF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"649648\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hE8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E8 "); - $fwrite(fp,"650649\n"); - end - FInput1E = 64'h3CA0020000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'h80AFD12800000000; - ans = 64'h742F9C 400000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"651650\n"); - end - FInput1E = 64'hFFFA302B00000000; - FInput2E = 64'hAF9F998 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"652651\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFE00000000; - ans = 64'h01FFFE 400000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"653652\n"); - end - FInput1E = 64'hFFE0000700000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 F00000000; - flags = 5'hD3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D3 "); - $fwrite(fp,"654653\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07FFFFFF00000000; - ans = 64'hFFBFF0 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"655654\n"); - end - FInput1E = 64'hC204F11200000000; - FInput2E = 64'hD319095 00000000; - FInput3E = 64'hFA00000100000000; - ans = 64'h00FFFF E00000000; - flags = 5'h6D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6D "); - $fwrite(fp,"656655\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"657656\n"); - end - FInput1E = 64'h438C5C0D00000000; - FInput2E = 64'hE7903C5 00000000; - FInput3E = 64'hFE75BBF100000000; - ans = 64'h8CC504 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"658657\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"659658\n"); - end - FInput1E = 64'hCD31407800000000; - FInput2E = 64'h84D3BB3 00000000; - FInput3E = 64'hE0181CEC00000000; - ans = 64'h01BFC6 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"660659\n"); - end - FInput1E = 64'hF78FFFFF00000000; - FInput2E = 64'hFE001FF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"661660\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02240BEF00000000; - ans = 64'hDC60A7 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"662661\n"); - end - FInput1E = 64'h40187C3600000000; - FInput2E = 64'h8FEA9C1 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h48; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48 "); - $fwrite(fp,"663662\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFC07F00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"664663\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hFFFFEF 400000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"665664\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"666665\n"); - end - FInput1E = 64'h4057B55000000000; - FInput2E = 64'hE98CDD8 00000000; - FInput3E = 64'h01E3FFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"667666\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 500000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"668667\n"); - end - FInput1E = 64'h9530BFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF0FFFFFF00000000; - ans = 64'hE00000 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"669668\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h8003FFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"670669\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF22A961D00000000; - ans = 64'hD5A41D C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"671670\n"); - end - FInput1E = 64'hC01FEFFF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h8B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8B "); - $fwrite(fp,"672671\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCB0ADCC100000000; - ans = 64'h1A8319 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"673672\n"); - end - FInput1E = 64'h47F0040700000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00008000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hB3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B3 "); - $fwrite(fp,"674673\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"675674\n"); - end - FInput1E = 64'hC34CB49E00000000; - FInput2E = 64'h70082D0 00000000; - FInput3E = 64'h1E00000600000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"676675\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"677676\n"); - end - FInput1E = 64'h36E08DEE00000000; - FInput2E = 64'h147D154 00000000; - FInput3E = 64'h01FFFF0000000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"678677\n"); - end - FInput1E = 64'h37FFFFC000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"679678\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h04FFFDFF00000000; - ans = 64'hFFDFFF C00000000; - flags = 5'h18; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18 "); - $fwrite(fp,"680679\n"); - end - FInput1E = 64'hBFEFFEFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hA5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A5 "); - $fwrite(fp,"681680\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h79E680B000000000; - ans = 64'h4DB3C2 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"682681\n"); - end - FInput1E = 64'h4B98EBA300000000; - FInput2E = 64'h512FB7B 00000000; - FInput3E = 64'hFE84639000000000; - ans = 64'h0D967A 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"683682\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"684683\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hA592C4D000000000; - ans = 64'h4576F8 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"685684\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h38; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38 "); - $fwrite(fp,"686685\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFFFF81F 00000000; - FInput3E = 64'h29FFFFFE00000000; - ans = 64'hFFFFDF 300000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"687686\n"); - end - FInput1E = 64'h37E0020100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"688687\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FE000000000000; - ans = 64'h010000 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"689688\n"); - end - FInput1E = 64'h4B4BFFFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"690689\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hDE01FFFF00000000; - ans = 64'hF00000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"691690\n"); - end - FInput1E = 64'hC041CB1700000000; - FInput2E = 64'hC90E70D 00000000; - FInput3E = 64'h37D77BC500000000; - ans = 64'hCFE065 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"692691\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"693692\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'hFFE0000 00000000; - FInput3E = 64'h7EFFFFFC00000000; - ans = 64'h000003 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"694693\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"695694\n"); - end - FInput1E = 64'hF7E131B300000000; - FInput2E = 64'h191F6EE 00000000; - FInput3E = 64'h0100000300000000; - ans = 64'hFFFFDE 400000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"696695\n"); - end - FInput1E = 64'h41E0000500000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"697696\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7EFFFFFE00000000; - ans = 64'hFEFFFE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"698697\n"); - end - FInput1E = 64'h3E3F6ACD00000000; - FInput2E = 64'hE9F5A26 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"699698\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3DFF7FFF00000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"700699\n"); - end - FInput1E = 64'hC95FFFFF00000000; - FInput2E = 64'hFFFC0FF 00000000; - FInput3E = 64'h92FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"701700\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"702701\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h8007FFF 00000000; - FInput3E = 64'hF9FFBFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"703702\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"704703\n"); - end - FInput1E = 64'h00215E8C00000000; - FInput2E = 64'h8F0A008 00000000; - FInput3E = 64'hAFFFFEFF00000000; - ans = 64'hFFC000 900000000; - flags = 5'h7D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7D "); - $fwrite(fp,"705704\n"); - end - FInput1E = 64'h47E7CF9300000000; - FInput2E = 64'h9204C69 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"706705\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000400000000; - ans = 64'h003FFF A00000000; - flags = 5'h57; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57 "); - $fwrite(fp,"707706\n"); - end - FInput1E = 64'h4050851000000000; - FInput2E = 64'h6016EBC 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"708707\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA9FFF7FF00000000; - ans = 64'hFFFFC0 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"709708\n"); - end - FInput1E = 64'hBFCFFFDF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h01F7FFFF00000000; - ans = 64'hFFFFFD 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"710709\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"711710\n"); - end - FInput1E = 64'hB7F0000000000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'h010000FF00000000; - ans = 64'hEFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"712711\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"713712\n"); - end - FInput1E = 64'h400E510300000000; - FInput2E = 64'hF4CBD89 00000000; - FInput3E = 64'h7E00004000000000; - ans = 64'h000008 300000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"714713\n"); - end - FInput1E = 64'hB7F03FDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"715714\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0600000000000000; - ans = 64'h7FFFFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"716715\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hE000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"717716\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF171FA5400000000; - ans = 64'h19A95D 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"718717\n"); - end - FInput1E = 64'h402FFFF000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hE200040000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"719718\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"720719\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'h8FFFFFE 00000000; - FInput3E = 64'h0AFFFFFF00000000; - ans = 64'hFEFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"721720\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"722721\n"); - end - FInput1E = 64'hC6AFC00000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h00DA790900000000; - ans = 64'h36CBD7 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"723722\n"); - end - FInput1E = 64'hCA60291900000000; - FInput2E = 64'hB707559 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"724723\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE49625E00000000; - ans = 64'hB36F85 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"725724\n"); - end - FInput1E = 64'h380FFFF700000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"726725\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0A1FE00000000000; - ans = 64'h000000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"727726\n"); - end - FInput1E = 64'hC1CEFB2200000000; - FInput2E = 64'h501B3F1 00000000; - FInput3E = 64'h02FFF7FB00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"728727\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"729728\n"); - end - FInput1E = 64'h4030200000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hF501000000000000; - ans = 64'h002000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"730729\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"731730\n"); - end - FInput1E = 64'hBFB0000400000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'h80219B4700000000; - ans = 64'hB1BFFE 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"732731\n"); - end - FInput1E = 64'h3805F93500000000; - FInput2E = 64'h4169685 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"733732\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h08A45E9700000000; - ans = 64'h67BBEF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"734733\n"); - end - FInput1E = 64'h37EFDFFF00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"735734\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF975D87A00000000; - ans = 64'h5BDBAE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"736735\n"); - end - FInput1E = 64'h4030000F00000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'hCA2C3DE000000000; - ans = 64'hD3B0DC 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"737736\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"738737\n"); - end - FInput1E = 64'hBFE0FFFF00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'h81B9605A00000000; - ans = 64'h1C361F 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"739738\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h49; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"49 "); - $fwrite(fp,"740739\n"); - end - FInput1E = 64'hC51FFFFD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D0000FF00000000; - ans = 64'hFFFFF7 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"741740\n"); - end - FInput1E = 64'h3FC0001000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"742741\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCCFFFFFA00000000; - ans = 64'h000000 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"743742\n"); - end - FInput1E = 64'h3F03FFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"744743\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h9EFEFFFF00000000; - ans = 64'hF7FFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"745744\n"); - end - FInput1E = 64'h41D0003F00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'hFCFFE00000000000; - ans = 64'h00001F 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"746745\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"747746\n"); - end - FInput1E = 64'hC1E010F200000000; - FInput2E = 64'hCF5BC56 00000000; - FInput3E = 64'h00A336CC00000000; - ans = 64'hF10050 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"748747\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"749748\n"); - end - FInput1E = 64'h41C0001F00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'h7EFFFFFF00000000; - ans = 64'hFFDBFE B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"750749\n"); - end - FInput1E = 64'hC0CFFFFF00000000; - FInput2E = 64'hF8FFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"751750\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h2400000400000000; - ans = 64'h007FFF C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"752751\n"); - end - FInput1E = 64'hC3C5995700000000; - FInput2E = 64'h40046C1 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"753752\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3D00001000000000; - ans = 64'h03FFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"754753\n"); - end - FInput1E = 64'hBFC3E58600000000; - FInput2E = 64'hAD369EE 00000000; - FInput3E = 64'h020FFEFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F3 "); - $fwrite(fp,"755754\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"756755\n"); - end - FInput1E = 64'h402FFF8000000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'hF2FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"757756\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"758757\n"); - end - FInput1E = 64'h002FFFFE00000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h5203FFF700000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"759758\n"); - end - FInput1E = 64'hBF4FFFFF00000000; - FInput2E = 64'hFFE000E 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"760759\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0108000000000000; - ans = 64'h080000 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"761760\n"); - end - FInput1E = 64'hBFB3F0FD00000000; - FInput2E = 64'h371FA07 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"762761\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h9DFFFFFF00000000; - ans = 64'hFDFBFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"763762\n"); - end - FInput1E = 64'h002EE06500000000; - FInput2E = 64'h3378C51 00000000; - FInput3E = 64'hEF007FFF00000000; - ans = 64'hFFFFFB B00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"764763\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"765764\n"); - end - FInput1E = 64'h400FF1FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8ADFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"766765\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"767766\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h007DFFF 00000000; - FInput3E = 64'h021FFFFF00000000; - ans = 64'hFFBFFE 400000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"768767\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hEFFFFFD 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"769768\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h165ADDDF00000000; - ans = 64'h22EB50 400000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"770769\n"); - end - FInput1E = 64'h43C4000100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"771770\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h45FF7FFE00000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"772771\n"); - end - FInput1E = 64'hCD9FFFEF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF3C8823F00000000; - ans = 64'h00CF4B 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"773772\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"774773\n"); - end - FInput1E = 64'h3FB0000000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h890EA08600000000; - ans = 64'hDE62B0 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"775774\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"776775\n"); - end - FInput1E = 64'h47F1000000000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'h05FFFFFF00000000; - ans = 64'h001FFF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"777776\n"); - end - FInput1E = 64'h43C0100000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"778777\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hD2FFFFFD00000000; - ans = 64'hFFFFF0 B00000000; - flags = 5'hA7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A7 "); - $fwrite(fp,"779778\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h001FC00 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"780779\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0600003F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"781780\n"); - end - FInput1E = 64'h0028C71900000000; - FInput2E = 64'h0E89E71 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h0FFF00 900000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"782781\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"783782\n"); - end - FInput1E = 64'h47FFFFDF00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'h817FFFDF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"784783\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"785784\n"); - end - FInput1E = 64'h41C0002000000000; - FInput2E = 64'h0800000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h040006 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"786785\n"); - end - FInput1E = 64'h41DC414800000000; - FInput2E = 64'h8E1CA3D 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"787786\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000D00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"788787\n"); - end - FInput1E = 64'h41EFF7F700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"789788\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00080000000000; - ans = 64'h040000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"790789\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'hDFFFFF C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"791790\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"792791\n"); - end - FInput1E = 64'h8020010000000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'h25FFFFEF00000000; - ans = 64'hFFF000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"793792\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 500000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"794793\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'h9E00000000000000; - ans = 64'h0017FF 300000000; - flags = 5'hE6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E6 "); - $fwrite(fp,"795794\n"); - end - FInput1E = 64'hFFED83A600000000; - FInput2E = 64'h2E656B1 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"796795\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h30BFFFFF00000000; - ans = 64'hBFFFFE 500000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"797796\n"); - end - FInput1E = 64'h450FFFC000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"798797\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hBC6003B400000000; - ans = 64'hF58FDD C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"799798\n"); - end - FInput1E = 64'hD610000F00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h0200000200000000; - ans = 64'h000001 400000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"800799\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"801800\n"); - end - FInput1E = 64'hC010002000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h0107FF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"802801\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"803802\n"); - end - FInput1E = 64'h4021FFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1BFE00FF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"804803\n"); - end - FInput1E = 64'h3F925A3300000000; - FInput2E = 64'hFB28A7D 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"805804\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h32B8521E00000000; - ans = 64'hE7D354 A00000000; - flags = 5'h18; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18 "); - $fwrite(fp,"806805\n"); - end - FInput1E = 64'h7EBFFFDF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"807806\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB03FFFE00000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"808807\n"); - end - FInput1E = 64'hC1A0100000000000; - FInput2E = 64'h0000006 00000000; - FInput3E = 64'h0600000400000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h8E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8E "); - $fwrite(fp,"809808\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"810809\n"); - end - FInput1E = 64'h401C000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"811810\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"812811\n"); - end - FInput1E = 64'hC0BF010000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C0011FF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"813812\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"814813\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFA264A7100000000; - ans = 64'hDB99C5 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"815814\n"); - end - FInput1E = 64'hC3CAFD5900000000; - FInput2E = 64'h4A4CBA9 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1C "); - $fwrite(fp,"816815\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3D76047B00000000; - ans = 64'h2F53F0 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"817816\n"); - end - FInput1E = 64'hC01A656E00000000; - FInput2E = 64'h23683EE 00000000; - FInput3E = 64'h2FFFFFFF00000000; - ans = 64'h7FFFDF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"818817\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"819818\n"); - end - FInput1E = 64'h401FFE0000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'h0004040000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"820819\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"821820\n"); - end - FInput1E = 64'h3EA0000000000000; - FInput2E = 64'h10000FF 00000000; - FInput3E = 64'hF0FEFFBF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"822821\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'h7FFC000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"823822\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3274A24F00000000; - ans = 64'hEE6ECB 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"824823\n"); - end - FInput1E = 64'hBDCFFFF700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"825824\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFF7FF00000000; - ans = 64'hFDFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"826825\n"); - end - FInput1E = 64'h405FFFBF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3F1D678E00000000; - ans = 64'hBCDA92 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"827826\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"828827\n"); - end - FInput1E = 64'h406FFFEF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h34B16AB500000000; - ans = 64'hA08BCB B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"829828\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"830829\n"); - end - FInput1E = 64'h41DFFFF700000000; - FInput2E = 64'hFFFBFFE 00000000; - FInput3E = 64'h3FFF7F7F00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"831830\n"); - end - FInput1E = 64'hAD50000000000000; - FInput2E = 64'hFFFFF7F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"832831\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34BFDFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"833832\n"); - end - FInput1E = 64'h43E0000000000000; - FInput2E = 64'h03FFC00 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"834833\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EFFFF7D00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"835834\n"); - end - FInput1E = 64'h7FF4BCB400000000; - FInput2E = 64'h4A9BE81 00000000; - FInput3E = 64'hFB0007F700000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"836835\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"837836\n"); - end - FInput1E = 64'hC3CF5D4E00000000; - FInput2E = 64'h7E932A1 00000000; - FInput3E = 64'h0320000000000000; - ans = 64'h007FFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"838837\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"839838\n"); - end - FInput1E = 64'hC006738A00000000; - FInput2E = 64'hCD5527E 00000000; - FInput3E = 64'h1E00008000000000; - ans = 64'h0000FF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"840839\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"841840\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF03FFFF00000000; - ans = 64'hFDFFFE C00000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"842841\n"); - end - FInput1E = 64'hC1F0000000000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"843842\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h27D9DFB600000000; - ans = 64'h014426 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"844843\n"); - end - FInput1E = 64'hB530008000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCFFFFE700000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"845844\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"846845\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFFE007 00000000; - FInput3E = 64'h89003FFF00000000; - ans = 64'hFE0000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"847846\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"848847\n"); - end - FInput1E = 64'h41EFFEFF00000000; - FInput2E = 64'hDFFFFFE 00000000; - FInput3E = 64'h3EFFFEFF00000000; - ans = 64'hFFFF7E C00000000; - flags = 5'h41; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41 "); - $fwrite(fp,"849848\n"); - end - FInput1E = 64'h3E0FFC0000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"850849\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0BFFFE 500000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"851850\n"); - end - FInput1E = 64'h3FCADA8A00000000; - FInput2E = 64'hB85FA49 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"852851\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFFFF9F00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"853852\n"); - end - FInput1E = 64'hBFE0800000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'h0001FF B00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"854853\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"855854\n"); - end - FInput1E = 64'h3453348E00000000; - FInput2E = 64'h1AB8B5E 00000000; - FInput3E = 64'h1F2DAB5E00000000; - ans = 64'h548E31 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"856855\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 100000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"857856\n"); - end - FInput1E = 64'h3FEFFE0000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hFBFDFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"858857\n"); - end - FInput1E = 64'hB7CFFFFF00000000; - FInput2E = 64'h0FFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"859858\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h010FEFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"860859\n"); - end - FInput1E = 64'hC3F3F71100000000; - FInput2E = 64'hA4A9A4F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"861860\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h28FFFFFF00000000; - ans = 64'hFEFFFB 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"862861\n"); - end - FInput1E = 64'hBC2FEFFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hB400000000000000; - ans = 64'h01FFDE C00000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"863862\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"864863\n"); - end - FInput1E = 64'h41FFF80000000000; - FInput2E = 64'h3FFFFFE 00000000; - FInput3E = 64'hE700000100000000; - ans = 64'hFFBFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"865864\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 500000000; - flags = 5'h57; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57 "); - $fwrite(fp,"866865\n"); - end - FInput1E = 64'hC027E00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF8FFFFFF00000000; - ans = 64'hFFD800 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"867866\n"); - end - FInput1E = 64'h402F000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"868867\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h17F07FFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"869868\n"); - end - FInput1E = 64'hC066A42700000000; - FInput2E = 64'hDC5EB7D 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"870869\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCA31A5D00000000; - ans = 64'hFF7D0C B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"871870\n"); - end - FInput1E = 64'hC06FFFFF00000000; - FInput2E = 64'hFF8000F 00000000; - FInput3E = 64'h340000FF00000000; - ans = 64'hFFF000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"872871\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"873872\n"); - end - FInput1E = 64'h063FFFFF00000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'hFEA035EC00000000; - ans = 64'h95E012 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"874873\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"875874\n"); - end - FInput1E = 64'hCDDFFFFF00000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'h0380003F00000000; - ans = 64'hFFFFFF 900000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"876875\n"); - end - FInput1E = 64'hC340001000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"877876\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFBA65C00000000; - ans = 64'h6915F8 B00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"878877\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hDFFEFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"879878\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34B1D53B00000000; - ans = 64'hA16F39 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"880879\n"); - end - FInput1E = 64'hBEDFFFFF00000000; - FInput2E = 64'hFFFFF80 00000000; - FInput3E = 64'hDB00000100000000; - ans = 64'h00003E C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"881880\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"882881\n"); - end - FInput1E = 64'h380FE00000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h817375F600000000; - ans = 64'h51A4A0 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"883882\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hDC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DC "); - $fwrite(fp,"884883\n"); - end - FInput1E = 64'h5F3F7FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00100000000000; - ans = 64'h000000 200000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"885884\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFF8003 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"886885\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA3FFFF000000000; - ans = 64'h000000 300000000; - flags = 5'hA2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A2 "); - $fwrite(fp,"887886\n"); - end - FInput1E = 64'h403FFFE000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"888887\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01BFFEFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"889888\n"); - end - FInput1E = 64'hC4E6997B00000000; - FInput2E = 64'h75A9BB2 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'h0003FF C00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"890889\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"891890\n"); - end - FInput1E = 64'h001DD5DA00000000; - FInput2E = 64'h2AB4E8C 00000000; - FInput3E = 64'h3D0000FF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"892891\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"893892\n"); - end - FInput1E = 64'h2C9FFFFF00000000; - FInput2E = 64'hF7FFFF7 00000000; - FInput3E = 64'h8ADFFFFF00000000; - ans = 64'hFFF000 500000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"894893\n"); - end - FInput1E = 64'h3F7C000000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"895894\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EDC332C00000000; - ans = 64'h73D0BF 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"896895\n"); - end - FInput1E = 64'hC1EFFFF000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hF6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F6 "); - $fwrite(fp,"897896\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF08000000000000; - ans = 64'h00000F C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"898897\n"); - end - FInput1E = 64'hDE6D10D200000000; - FInput2E = 64'h1A69CB0 00000000; - FInput3E = 64'hF6FEFFEF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"899898\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"900899\n"); - end - FInput1E = 64'h47F8F7E700000000; - FInput2E = 64'hDA9C199 00000000; - FInput3E = 64'hBD00000000000000; - ans = 64'h004000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"901900\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h37; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37 "); - $fwrite(fp,"902901\n"); - end - FInput1E = 64'h7FD5220B00000000; - FInput2E = 64'h1609CF6 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h001020 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"903902\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"904903\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFD11A300000000; - ans = 64'h704604 A00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"905904\n"); - end - FInput1E = 64'hBFC7FFFF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"906905\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE3EF03A00000000; - ans = 64'hE70ABE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"907906\n"); - end - FInput1E = 64'h9A9EFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFEFFFF00000000; - ans = 64'hFFDFFF 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"908907\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"909908\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFF80200 00000000; - FInput3E = 64'h3D1215F500000000; - ans = 64'h36ED06 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"910909\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"911910\n"); - end - FInput1E = 64'hC1DFEFFE00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1C00400000000000; - ans = 64'h0001FE C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"912911\n"); - end - FInput1E = 64'h47F5B56B00000000; - FInput2E = 64'hD44531E 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"913912\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF802000000000000; - ans = 64'h003FFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"914913\n"); - end - FInput1E = 64'h4D60624F00000000; - FInput2E = 64'h9DB184C 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"915914\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE9FFFFF800000000; - ans = 64'h003FFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"916915\n"); - end - FInput1E = 64'h201FF80000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFE7FF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"917916\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"918917\n"); - end - FInput1E = 64'h3FD0020000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0228000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"919918\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"920919\n"); - end - FInput1E = 64'hC030040000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFFBF00000000; - ans = 64'hFFFFFC 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"921920\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"922921\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F9CD02700000000; - ans = 64'h410F4D C00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"923922\n"); - end - FInput1E = 64'h41EF800000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"924923\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FE000000000000; - ans = 64'h010000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"925924\n"); - end - FInput1E = 64'hB80FFFE000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB1BFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hD9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D9 "); - $fwrite(fp,"926925\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"927926\n"); - end - FInput1E = 64'h0023FFFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h5BFFFF7F00000000; - ans = 64'hFFFFE0 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"928927\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 500000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"929928\n"); - end - FInput1E = 64'h4030040300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFDFF00000000; - ans = 64'hFFFDFF 300000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"930929\n"); - end - FInput1E = 64'hD44FFFFC00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"931930\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFA43DEE600000000; - ans = 64'h918C10 C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"932931\n"); - end - FInput1E = 64'hBCA86E0500000000; - FInput2E = 64'hD5CFC12 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"933932\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F00000F00000000; - ans = 64'hFFFBFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"934933\n"); - end - FInput1E = 64'hC70C4CE900000000; - FInput2E = 64'h0A53683 00000000; - FInput3E = 64'hC60635DF00000000; - ans = 64'h6937DE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"935934\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"936935\n"); - end - FInput1E = 64'h8004BFD000000000; - FInput2E = 64'h8923951 00000000; - FInput3E = 64'h03FFFF8000000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"937936\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"938937\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFDFBFFF 00000000; - FInput3E = 64'h0AFFFFFF00000000; - ans = 64'hAFFFFF B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"939938\n"); - end - FInput1E = 64'hC1F078BD00000000; - FInput2E = 64'h7735C30 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"940939\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hFFFFF9 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"941940\n"); - end - FInput1E = 64'h400FF7FF00000000; - FInput2E = 64'hFFFFFF0 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"942941\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h9BD36D1700000000; - ans = 64'hB585B2 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"943942\n"); - end - FInput1E = 64'hF4A0000800000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h004003 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"944943\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"945944\n"); - end - FInput1E = 64'hBFDFFF0000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFCFFF7FF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"946945\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"947946\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h003FF80 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h037FFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"948947\n"); - end - FInput1E = 64'hBF3FF7FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"949948\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h99FF000000000000; - ans = 64'h000800 800000000; - flags = 5'hEC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EC "); - $fwrite(fp,"950949\n"); - end - FInput1E = 64'hC1F0000700000000; - FInput2E = 64'hFBFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"951950\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFF800000000; - ans = 64'h010000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"952951\n"); - end - FInput1E = 64'hC3E007FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2220000000000000; - ans = 64'h002000 B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"953952\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"954953\n"); - end - FInput1E = 64'h9EB0F47900000000; - FInput2E = 64'hCE2D9EF 00000000; - FInput3E = 64'h3C00000100000000; - ans = 64'h0000FF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"955954\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h5B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5B "); - $fwrite(fp,"956955\n"); - end - FInput1E = 64'h41FFFFFB00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h34FFF00000000000; - ans = 64'h000020 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"957956\n"); - end - FInput1E = 64'hBE30003F00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"958957\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h007FFFFF00000000; - ans = 64'hF00000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"959958\n"); - end - FInput1E = 64'hC800007F00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 D00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"960959\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h332B005500000000; - ans = 64'h632C5F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"961960\n"); - end - FInput1E = 64'h37E3AA1500000000; - FInput2E = 64'h16B43E2 00000000; - FInput3E = 64'h0200000700000000; - ans = 64'hFFFF7F 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"962961\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"963962\n"); - end - FInput1E = 64'h43D0200000000000; - FInput2E = 64'h000007E 00000000; - FInput3E = 64'h55FFFFFE00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"964963\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"965964\n"); - end - FInput1E = 64'hC85FFFFE00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'hFCFFFFFB00000000; - ans = 64'hFF8000 B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"966965\n"); - end - FInput1E = 64'hBCAFF00000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"967966\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFDEFFE 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"968967\n"); - end - FInput1E = 64'hBFCCC1AB00000000; - FInput2E = 64'h34536F4 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"969968\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h973FFFFF00000000; - ans = 64'hFFFFBE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"970969\n"); - end - FInput1E = 64'h0010000200000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'hF2FFDFFF00000000; - ans = 64'hDFFFFF C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"971970\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"972971\n"); - end - FInput1E = 64'h3FC0000800000000; - FInput2E = 64'h0007FFF 00000000; - FInput3E = 64'h1F04AF2700000000; - ans = 64'hA68933 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"973972\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"974973\n"); - end - FInput1E = 64'hDF60200000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5200004000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"975974\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hEFDFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"976975\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD0FFFF0000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h1C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1C "); - $fwrite(fp,"977976\n"); - end - FInput1E = 64'hCD412AD900000000; - FInput2E = 64'hCD1A9E9 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"978977\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0DF7FFFF00000000; - ans = 64'h000000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"979978\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'hFDC92D8600000000; - ans = 64'hB81A59 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"980979\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"981980\n"); - end - FInput1E = 64'hC0003FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h81FFFFFF00000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"982981\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 D00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"983982\n"); - end - FInput1E = 64'hBF4FDBFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD7FFFFF00000000; - ans = 64'hFF7FFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"984983\n"); - end - FInput1E = 64'hBFD0200000000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"985984\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h043FFF 400000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"986985\n"); - end - FInput1E = 64'h3E8FFF0000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"987986\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FFEC00000000000; - ans = 64'h000000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"988987\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hFDFFF7FB00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"989988\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"990989\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0080010 00000000; - FInput3E = 64'hFCFDFFFF00000000; - ans = 64'hFFFF7F 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"991990\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h96; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"96 "); - $fwrite(fp,"992991\n"); - end - FInput1E = 64'hC800000500000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hFFFFBF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"993992\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h00FFFFD 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"994993\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EE0000000000000; - ans = 64'h000004 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"995994\n"); - end - FInput1E = 64'hBFDFDFFF00000000; - FInput2E = 64'hFFFFF7F 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'hC5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C5 "); - $fwrite(fp,"996995\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFCEE52000000000; - ans = 64'hCD7FE5 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"997996\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFC0020 300000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"998997\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"999998\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFF00007 00000000; - FInput3E = 64'h1CB14DD800000000; - ans = 64'h9140AD B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1000999\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1002000\n"); - end - FInput1E = 64'h3FEFFBFD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFEFF00000000; - ans = 64'hFFFF7E C00000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"1003001\n"); - end - FInput1E = 64'hE0ADFFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1004002\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD1D258D800000000; - ans = 64'h42B5FD B00000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"1005003\n"); - end - FInput1E = 64'h0BF0000000000000; - FInput2E = 64'h7F00000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 500000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1006004\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0EFDFF7F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1007005\n"); - end - FInput1E = 64'hA90FFFFF00000000; - FInput2E = 64'hF0007FE 00000000; - FInput3E = 64'h5300000000000000; - ans = 64'h001400 800000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"1008006\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1009007\n"); - end - FInput1E = 64'hC343ADE400000000; - FInput2E = 64'h06E5425 00000000; - FInput3E = 64'h04EFFFFB00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1010008\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"1011009\n"); - end - FInput1E = 64'hBFE86EA000000000; - FInput2E = 64'h941DE15 00000000; - FInput3E = 64'h01FFFBFD00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1012010\n"); - end - FInput1E = 64'h41F0402000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1013011\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFE00000000; - ans = 64'h000000 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1014012\n"); - end - FInput1E = 64'h4EB0000000000000; - FInput2E = 64'h3FFFFFA 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1015013\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFC5A9C5700000000; - ans = 64'h728038 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1016014\n"); - end - FInput1E = 64'hAD00000000000000; - FInput2E = 64'hFE00000 00000000; - FInput3E = 64'h0B00000000000000; - ans = 64'h007DFE 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1017015\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1018016\n"); - end - FInput1E = 64'h3AEFC00000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h3C00000000000000; - ans = 64'h7FFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1019017\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1020018\n"); - end - FInput1E = 64'hC581BFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02EEF2A300000000; - ans = 64'hC3CDB8 B00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1021019\n"); - end - FInput1E = 64'h449FC00300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1022020\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7BFFFFEF00000000; - ans = 64'h000000 400000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"1023021\n"); - end - FInput1E = 64'h72EFFFFF00000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1024022\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E400FA700000000; - ans = 64'h559DAF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1025023\n"); - end - FInput1E = 64'h41AFFFFF00000000; - FInput2E = 64'hFE1FFFE 00000000; - FInput3E = 64'hD21FEC0300000000; - ans = 64'hAE5C0C 400000000; - flags = 5'h05; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"05 "); - $fwrite(fp,"1026024\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1027025\n"); - end - FInput1E = 64'h2D0A3EE600000000; - FInput2E = 64'h3E58EC4 00000000; - FInput3E = 64'h4C1B4D0400000000; - ans = 64'h13AF0E B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1028026\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h8E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8E "); - $fwrite(fp,"1029027\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hDBFFF7FF00000000; - ans = 64'hFFFFDF 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1030028\n"); - end - FInput1E = 64'hB7E0007F00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1031029\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD7B523E00000000; - ans = 64'hE9943A B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1032030\n"); - end - FInput1E = 64'h401FFFBF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"1033031\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0200001000000000; - ans = 64'h000800 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1034032\n"); - end - FInput1E = 64'h43E0000000000000; - FInput2E = 64'h0120000 00000000; - FInput3E = 64'hFB00100000000000; - ans = 64'h00001E 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1035033\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1036034\n"); - end - FInput1E = 64'hB41DFFFF00000000; - FInput2E = 64'hFBFFFFE 00000000; - FInput3E = 64'hB07FFFFE00000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1037035\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1038036\n"); - end - FInput1E = 64'h41E75D8900000000; - FInput2E = 64'hFA00231 00000000; - FInput3E = 64'h75869C7300000000; - ans = 64'h1C6B35 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1039037\n"); - end - FInput1E = 64'hC3F0000000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1040038\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA2CB3FB00000000; - ans = 64'h052AA2 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1041039\n"); - end - FInput1E = 64'hBE80000000000000; - FInput2E = 64'h2000800 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1042040\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0489E6DC00000000; - ans = 64'h063E6A B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1043041\n"); - end - FInput1E = 64'h434F2BE200000000; - FInput2E = 64'hA9BA789 00000000; - FInput3E = 64'hFFFC000000000000; - ans = 64'h000040 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1044042\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1045043\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hC00FFFE 00000000; - FInput3E = 64'h8100000000000000; - ans = 64'h000700 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1046044\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hF8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F8 "); - $fwrite(fp,"1047045\n"); - end - FInput1E = 64'h380FFFFE00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFDFEF30C00000000; - ans = 64'h77B842 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1048046\n"); - end - FInput1E = 64'hBFCB2F7700000000; - FInput2E = 64'h531177B 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1049047\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3ADFFFFF00000000; - ans = 64'hFFFFFB 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1050048\n"); - end - FInput1E = 64'h43F003FF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1051049\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF900000000000000; - ans = 64'h00043E 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1052050\n"); - end - FInput1E = 64'hBF1FFFFF00000000; - FInput2E = 64'hFE00003 00000000; - FInput3E = 64'h81FFFFFF00000000; - ans = 64'hFBFEFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1053051\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1054052\n"); - end - FInput1E = 64'h3FD0400000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h433FFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1055053\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B8 "); - $fwrite(fp,"1056054\n"); - end - FInput1E = 64'hC7FFE00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA3FFFFBF00000000; - ans = 64'hFFFFF7 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1057055\n"); - end - FInput1E = 64'hC3FF7FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1058056\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD07FFFF00000000; - ans = 64'hFFFF7E 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1059057\n"); - end - FInput1E = 64'h41CE000000000000; - FInput2E = 64'h0FFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h2D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2D "); - $fwrite(fp,"1060058\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h91FFFFFF00000000; - ans = 64'hE10000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1061059\n"); - end - FInput1E = 64'h43F0002000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h0000400000000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1062060\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1063061\n"); - end - FInput1E = 64'hF1EFFFFF00000000; - FInput2E = 64'hFFFF5FF 00000000; - FInput3E = 64'h02FFFF0000000000; - ans = 64'h400000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1064062\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"1065063\n"); - end - FInput1E = 64'hC2DCD5DF00000000; - FInput2E = 64'hB9EBC2A 00000000; - FInput3E = 64'h17FFFFFF00000000; - ans = 64'h03FFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1066064\n"); - end - FInput1E = 64'hFFDFFFF100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1067065\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFF7FE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1068066\n"); - end - FInput1E = 64'h403FBFFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1069067\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFEF7F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1070068\n"); - end - FInput1E = 64'h3FE7D05E00000000; - FInput2E = 64'h7AE4140 00000000; - FInput3E = 64'h01FFFFCF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"1071069\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1072070\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h7BFFFFF 00000000; - FInput3E = 64'h1C00000200000000; - ans = 64'h000020 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1073071\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 500000000; - flags = 5'hC9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C9 "); - $fwrite(fp,"1074072\n"); - end - FInput1E = 64'hABEFBDFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFEF00000000000; - ans = 64'h000000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1075073\n"); - end - FInput1E = 64'h3FB7953C00000000; - FInput2E = 64'hD76B629 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1076074\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF0D94F6A00000000; - ans = 64'h9A8EF4 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1077075\n"); - end - FInput1E = 64'hC3D6EB6D00000000; - FInput2E = 64'hDE43198 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1078076\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFC00000000000; - ans = 64'h00FFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1079077\n"); - end - FInput1E = 64'hBAC0000000000000; - FInput2E = 64'h20FFFFF 00000000; - FInput3E = 64'hBBFEC74D00000000; - ans = 64'h1247C5 300000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1080078\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1081079\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h0000300 00000000; - FInput3E = 64'h3EC95B2E00000000; - ans = 64'h055F08 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1082080\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1083081\n"); - end - FInput1E = 64'h4030007F00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h020001F800000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1084082\n"); - end - FInput1E = 64'h43D03FFF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1085083\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7FFF000000000000; - ans = 64'h0007FF 500000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1086084\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFF7F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1087085\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00EC2EC000000000; - ans = 64'hB1D29B 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1088086\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h210000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1089087\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1090088\n"); - end - FInput1E = 64'hC3F3C6AC00000000; - FInput2E = 64'h7CC517B 00000000; - FInput3E = 64'h6A00000000000000; - ans = 64'h000401 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1091089\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 800000000; - flags = 5'h18; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18 "); - $fwrite(fp,"1092090\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h0011A16C00000000; - ans = 64'h088D0A C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1093091\n"); - end - FInput1E = 64'h4804282A00000000; - FInput2E = 64'hB7545D5 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1094092\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF5FBFFFF00000000; - ans = 64'hFFFFEF 600000000; - flags = 5'hD3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D3 "); - $fwrite(fp,"1095093\n"); - end - FInput1E = 64'h3FA0000000000000; - FInput2E = 64'h2010000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF E00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1096094\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCCFFFFFF00000000; - ans = 64'hFF003F C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1097095\n"); - end - FInput1E = 64'h37EFFFC000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h3BFFFC0000000000; - ans = 64'h0001FE C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1098096\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1099097\n"); - end - FInput1E = 64'hBD30000000000000; - FInput2E = 64'h01FFFFE 00000000; - FInput3E = 64'h81FFEFFE00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1100098\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1101099\n"); - end - FInput1E = 64'hBF9BFFFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'hD9FEFFFF00000000; - ans = 64'hFFFC00 B00000000; - flags = 5'h2D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2D "); - $fwrite(fp,"1102100\n"); - end - FInput1E = 64'hBF3FFFE000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1103101\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFF00000000000; - ans = 64'h000002 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1104102\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h88; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88 "); - $fwrite(fp,"1105103\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h09FEFFFB00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1106104\n"); - end - FInput1E = 64'h43EFF7FF00000000; - FInput2E = 64'hF7FFFFE 00000000; - FInput3E = 64'hFCFFFFFC00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1107105\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1108106\n"); - end - FInput1E = 64'h3FB0010000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h93FFFFF700000000; - ans = 64'hFFF7FE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1109107\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 800000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1110108\n"); - end - FInput1E = 64'hBFCDFBFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF8FFFF0000000000; - ans = 64'h00001F 400000000; - flags = 5'h74; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74 "); - $fwrite(fp,"1111109\n"); - end - FInput1E = 64'hC1EFADB800000000; - FInput2E = 64'h3BA4CB8 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1112110\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB2B80A700000000; - ans = 64'hDAC3B8 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1113111\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'hFFFFF3E 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1114112\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h99461AC800000000; - ans = 64'h46074F 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1115113\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h1F04000000000000; - ans = 64'h000000 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1116114\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1117115\n"); - end - FInput1E = 64'h4050100100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4D01FFDF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1118116\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1E "); - $fwrite(fp,"1119117\n"); - end - FInput1E = 64'hC320000000000000; - FInput2E = 64'h0080010 00000000; - FInput3E = 64'hE0FFFFFF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1120118\n"); - end - FInput1E = 64'hBFF007FF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1121119\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF9FFFC0000000000; - ans = 64'h00003F 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1122120\n"); - end - FInput1E = 64'h41C0001000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'h0C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0C "); - $fwrite(fp,"1123121\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE7CA47CF00000000; - ans = 64'h2A982C F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1124122\n"); - end - FInput1E = 64'h5CC212C300000000; - FInput2E = 64'h5EA2637 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h00027F B00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"1125123\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1126124\n"); - end - FInput1E = 64'hC1CFBF7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hC4FFFFFF00000000; - ans = 64'hFE1FFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1127125\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 100000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1128126\n"); - end - FInput1E = 64'hC39080FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h020080 400000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1129127\n"); - end - FInput1E = 64'hC38FFEFF00000000; - FInput2E = 64'hFFFFFF0 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1130128\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE53E11E600000000; - ans = 64'h87C39C 300000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"1131129\n"); - end - FInput1E = 64'hBFDFBFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1132130\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hDF00080000000000; - ans = 64'h00007F 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1133131\n"); - end - FInput1E = 64'h3FBFFFFF00000000; - FInput2E = 64'hFF7F7FF 00000000; - FInput3E = 64'hFD3FFFFF00000000; - ans = 64'hFFFFF8 B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1134132\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1135133\n"); - end - FInput1E = 64'h43EFFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h0200100000000000; - ans = 64'h000007 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1136134\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1137135\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h200001F 00000000; - FInput3E = 64'hBAE28B1C00000000; - ans = 64'hA540E6 600000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1138136\n"); - end - FInput1E = 64'h47EFFFFF00000000; - FInput2E = 64'hFF80400 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1139137\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3DBFFFBF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hC6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C6 "); - $fwrite(fp,"1140138\n"); - end - FInput1E = 64'h4010000300000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1141139\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0E707AB400000000; - ans = 64'hC7F7C4 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1142140\n"); - end - FInput1E = 64'h3F2FFFFF00000000; - FInput2E = 64'hC3FFFFF 00000000; - FInput3E = 64'h4B00400000000000; - ans = 64'h0001FF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1143141\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1144142\n"); - end - FInput1E = 64'h3BAFFFFF00000000; - FInput2E = 64'hF7FFF80 00000000; - FInput3E = 64'h1D12005500000000; - ans = 64'h88737A 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1145143\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1146144\n"); - end - FInput1E = 64'h41FCEAA500000000; - FInput2E = 64'hD079204 00000000; - FInput3E = 64'hFF00100000000000; - ans = 64'h000400 700000000; - flags = 5'h41; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41 "); - $fwrite(fp,"1147145\n"); - end - FInput1E = 64'h802F35EE00000000; - FInput2E = 64'hD872210 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1148146\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00F8000000000000; - ans = 64'h0FFFFF B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1149147\n"); - end - FInput1E = 64'hC050041000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1150148\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8000003D00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1151149\n"); - end - FInput1E = 64'hCFEFFFFF00000000; - FInput2E = 64'hFFFFF87 00000000; - FInput3E = 64'h7F00000100000000; - ans = 64'hFFEFFE 600000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1152150\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1153151\n"); - end - FInput1E = 64'h3813FFFF00000000; - FInput2E = 64'hFFFFFC0 00000000; - FInput3E = 64'h5DFFFC0000000000; - ans = 64'h001FFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1154152\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'hA3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A3 "); - $fwrite(fp,"1155153\n"); - end - FInput1E = 64'hBF1FFFEF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h62887E2200000000; - ans = 64'hCDB1D6 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1156154\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1157155\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h81F000FF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h8E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8E "); - $fwrite(fp,"1158156\n"); - end - FInput1E = 64'hC02FBEFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1159157\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEF00000000000000; - ans = 64'h0003FE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1160158\n"); - end - FInput1E = 64'h3E10801F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FFFFF7F00000000; - ans = 64'hFFFFEE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1161159\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1162160\n"); - end - FInput1E = 64'h47F0000000000000; - FInput2E = 64'h3FBFFFF 00000000; - FInput3E = 64'h02FA400D00000000; - ans = 64'h0614FB 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1163161\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 100000000; - flags = 5'h71; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71 "); - $fwrite(fp,"1164162\n"); - end - FInput1E = 64'h0000000800000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h807BAF9E00000000; - ans = 64'h726944 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1165163\n"); - end - FInput1E = 64'hC3DFFFE000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1166164\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFBFDFFFF00000000; - ans = 64'hFC0000 B00000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"1167165\n"); - end - FInput1E = 64'hC7EFFFFF00000000; - FInput2E = 64'hFF0000F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hBC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BC "); - $fwrite(fp,"1168166\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h010FFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1169167\n"); - end - FInput1E = 64'hC7E0000000000000; - FInput2E = 64'h5FFFFFF 00000000; - FInput3E = 64'h5800000000000000; - ans = 64'h0FF7FE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1170168\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1171169\n"); - end - FInput1E = 64'h4054A31F00000000; - FInput2E = 64'h573B44B 00000000; - FInput3E = 64'hF4FFFFFF00000000; - ans = 64'hE00040 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1172170\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1173171\n"); - end - FInput1E = 64'h41A6957F00000000; - FInput2E = 64'hDBBC37D 00000000; - FInput3E = 64'hE3FFFFBF00000000; - ans = 64'hFDFFFF B00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1174172\n"); - end - FInput1E = 64'h3F60000400000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1175173\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hFFF7FF C00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1176174\n"); - end - FInput1E = 64'h43DFFF0000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1177175\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1000003F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1178176\n"); - end - FInput1E = 64'h37E0000000000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'hFEBDEAD300000000; - ans = 64'h22F42C B00000000; - flags = 5'h9E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9E "); - $fwrite(fp,"1179177\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1180178\n"); - end - FInput1E = 64'h50B0010000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h3FEA7A1700000000; - ans = 64'h5587AC C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1181179\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1182180\n"); - end - FInput1E = 64'h415FFFFF00000000; - FInput2E = 64'hFFFEFFD 00000000; - FInput3E = 64'h7FFDFFFE00000000; - ans = 64'h000000 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1183181\n"); - end - FInput1E = 64'h4028000000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1184182\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80EDE77E00000000; - ans = 64'h3E6828 A00000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"1185183\n"); - end - FInput1E = 64'hC1CFBFFF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1186184\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFEF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1187185\n"); - end - FInput1E = 64'h4EAFFFFF00000000; - FInput2E = 64'h8100000 00000000; - FInput3E = 64'hD7FC000000000000; - ans = 64'h080000 B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1188186\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1189187\n"); - end - FInput1E = 64'h400FFFFE00000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h01FC000000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1190188\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"1191189\n"); - end - FInput1E = 64'h8A9D18B900000000; - FInput2E = 64'h465A3FA 00000000; - FInput3E = 64'h7FFF000000000000; - ans = 64'h000000 000000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"1192190\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFC03FFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1193191\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1400001000000000; - ans = 64'h0001FE B00000000; - flags = 5'h44; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44 "); - $fwrite(fp,"1194192\n"); - end - FInput1E = 64'h4020040000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F6 "); - $fwrite(fp,"1195193\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7800000000000000; - ans = 64'h000007 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1196194\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'h8D00000000000000; - ans = 64'h8003FE 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1197195\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1198196\n"); - end - FInput1E = 64'hC3F892FA00000000; - FInput2E = 64'hC2D3226 00000000; - FInput3E = 64'h0000008000000000; - ans = 64'h000040 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1199197\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1200198\n"); - end - FInput1E = 64'hBAC0000000000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h3E00010800000000; - ans = 64'h000000 500000000; - flags = 5'h1C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1C "); - $fwrite(fp,"1201199\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1202200\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hBEEEBFC700000000; - ans = 64'h8B23E2 400000000; - flags = 5'h1B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1B "); - $fwrite(fp,"1203201\n"); - end - FInput1E = 64'h2060000000000000; - FInput2E = 64'h1007FFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1204202\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3C7FC39600000000; - ans = 64'h273DD5 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1205203\n"); - end - FInput1E = 64'hBDBFFF8000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h34A63B4200000000; - ans = 64'hBB1FA9 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1206204\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1207205\n"); - end - FInput1E = 64'h3FEECEE500000000; - FInput2E = 64'hACFD752 00000000; - FInput3E = 64'hB900000000000000; - ans = 64'h00003F F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1208206\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1209207\n"); - end - FInput1E = 64'hCD60440000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFF800000000000; - ans = 64'h7FFFFF C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"1210208\n"); - end - FInput1E = 64'h001FFFFA00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1211209\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07FFFFFF00000000; - ans = 64'h77FFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1212210\n"); - end - FInput1E = 64'hDB1D7EC100000000; - FInput2E = 64'hB0ECB3B 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"1213211\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'h000007 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1214212\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hBFFF000 00000000; - FInput3E = 64'h3C40000000000000; - ans = 64'h000000 500000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1215213\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1216214\n"); - end - FInput1E = 64'h4BD0000000000000; - FInput2E = 64'h80007FE 00000000; - FInput3E = 64'hFDFF77FF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1217215\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1218216\n"); - end - FInput1E = 64'h801FFEFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF300010000000000; - ans = 64'h000100 700000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"1219217\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h7F7FFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1220218\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7CCFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h2C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2C "); - $fwrite(fp,"1221219\n"); - end - FInput1E = 64'h41EFFFFF00000000; - FInput2E = 64'hFF7FEFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1222220\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD9F677200000000; - ans = 64'h4052E6 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1223221\n"); - end - FInput1E = 64'h40FFFF0000000000; - FInput2E = 64'h00001FE 00000000; - FInput3E = 64'hC580000000000000; - ans = 64'hFFFFFF 000000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1224222\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1225223\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hFFFFF40 00000000; - FInput3E = 64'h00B340C600000000; - ans = 64'h0086EA B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1226224\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1227225\n"); - end - FInput1E = 64'hBFD8080000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6DFFFFFB00000000; - ans = 64'hDFFFFE C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"1228226\n"); - end - FInput1E = 64'h380FFFF300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1229227\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h008FFE 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1230228\n"); - end - FInput1E = 64'h3FBFFFFF00000000; - FInput2E = 64'hFFF7FF6 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1231229\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC3FF800000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1232230\n"); - end - FInput1E = 64'h3FD0400000000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'h23007DFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"1233231\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1234232\n"); - end - FInput1E = 64'h43FFFFFF00000000; - FInput2E = 64'hFDFF800 00000000; - FInput3E = 64'h8FFFFFFF00000000; - ans = 64'hF00003 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1235233\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1236234\n"); - end - FInput1E = 64'hC3F4958800000000; - FInput2E = 64'h5001E24 00000000; - FInput3E = 64'hFA0017FF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1237235\n"); - end - FInput1E = 64'hC3D07FFF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1238236\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000F00000000; - ans = 64'hFFFBFF C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1239237\n"); - end - FInput1E = 64'h47FF000700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 D00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"1240238\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0203FFFF00000000; - ans = 64'hFEFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1241239\n"); - end - FInput1E = 64'hB9DFF00000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hF9FEFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1242240\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1243241\n"); - end - FInput1E = 64'h48FFFFEF00000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'h48EF2A2A00000000; - ans = 64'hAF3A17 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1244242\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1245243\n"); - end - FInput1E = 64'h3AF0000000000000; - FInput2E = 64'h00200FF 00000000; - FInput3E = 64'h8081FFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1246244\n"); - end - FInput1E = 64'hC7E0000400000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1247245\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F46FEEF00000000; - ans = 64'h187CA0 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1248246\n"); - end - FInput1E = 64'hC1260D6800000000; - FInput2E = 64'hEAD7506 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1249247\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFBC0000000000; - ans = 64'h000000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1250248\n"); - end - FInput1E = 64'hA1AFFFFF00000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h1E01200000000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1251249\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1252250\n"); - end - FInput1E = 64'hC01C82A900000000; - FInput2E = 64'hADA65CA 00000000; - FInput3E = 64'h16DFFFFF00000000; - ans = 64'hFF7FFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1253251\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1254252\n"); - end - FInput1E = 64'h41EFFF8000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FE8272500000000; - ans = 64'h42D080 A00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1255253\n"); - end - FInput1E = 64'hC78FF3FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1256254\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0D001FFF00000000; - ans = 64'hFFFEFF 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"1257255\n"); - end - FInput1E = 64'h41F4F3FF00000000; - FInput2E = 64'h448D7F0 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h78; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78 "); - $fwrite(fp,"1258256\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0001200000000000; - ans = 64'h000000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1259257\n"); - end - FInput1E = 64'h37E0000400000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h12007FFF00000000; - ans = 64'hFFFF7F 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1260258\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1261259\n"); - end - FInput1E = 64'hD1D0007F00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFCD0E05200000000; - ans = 64'h909DDB 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1262260\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1263261\n"); - end - FInput1E = 64'h217ECF0E00000000; - FInput2E = 64'h8B02E0F 00000000; - FInput3E = 64'h490007BF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1264262\n"); - end - FInput1E = 64'hBE6FF80000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1265263\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0A0007FF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1266264\n"); - end - FInput1E = 64'hB80FFFFF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h1B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1B "); - $fwrite(fp,"1267265\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFF7F00000000; - ans = 64'hFFFBFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1268266\n"); - end - FInput1E = 64'hBFCFEFFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'hFFFFF6FF00000000; - ans = 64'hFFFFFF 100000000; - flags = 5'h77; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"77 "); - $fwrite(fp,"1269267\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1270268\n"); - end - FInput1E = 64'h410928D500000000; - FInput2E = 64'h70CFC38 00000000; - FInput3E = 64'h2AFFFFFF00000000; - ans = 64'hFFFE7F 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1271269\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1272270\n"); - end - FInput1E = 64'hC1F7FFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h14FF800000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h01; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"01 "); - $fwrite(fp,"1273271\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hE00FFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1274272\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD80000000000000; - ans = 64'h000002 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1275273\n"); - end - FInput1E = 64'hBFB0107F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1276274\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD4FFFFFF00000000; - ans = 64'hF00000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1277275\n"); - end - FInput1E = 64'h400FF80000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1FA682E400000000; - ans = 64'hF47F8B 400000000; - flags = 5'h1B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1B "); - $fwrite(fp,"1278276\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1279277\n"); - end - FInput1E = 64'h000FFFF300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5100000000000000; - ans = 64'h003FFD C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1280278\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"1281279\n"); - end - FInput1E = 64'h3FFB25B700000000; - FInput2E = 64'hBD914E5 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'hFFFFF7 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1282280\n"); - end - FInput1E = 64'h8C2FFFFF00000000; - FInput2E = 64'hFFFFFF6 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1283281\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h00FEFF C00000000; - flags = 5'h36; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36 "); - $fwrite(fp,"1284282\n"); - end - FInput1E = 64'hC1F0200000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 E00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1285283\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8035527E00000000; - ans = 64'h465945 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1286284\n"); - end - FInput1E = 64'hC1FAA81F00000000; - FInput2E = 64'h8407228 00000000; - FInput3E = 64'h1DFE000000000000; - ans = 64'h3FFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1287285\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1288286\n"); - end - FInput1E = 64'hBF9EFFFF00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h7701000000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1289287\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hC5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C5 "); - $fwrite(fp,"1290288\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000042 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hDFFFF7 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1291289\n"); - end - FInput1E = 64'h41C01FEF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1292290\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'hFFFF03 B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1293291\n"); - end - FInput1E = 64'h41F2000000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1294292\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E08000000000000; - ans = 64'h7FFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1295293\n"); - end - FInput1E = 64'h45A0000000000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'h010000FF00000000; - ans = 64'hFFFF00 500000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1296294\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1297295\n"); - end - FInput1E = 64'h3160040000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3C47319C00000000; - ans = 64'h87E2DF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1298296\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1299297\n"); - end - FInput1E = 64'h802FFFF700000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF0023FF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1300298\n"); - end - FInput1E = 64'h3FC1E79F00000000; - FInput2E = 64'h14DFCCD 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1301299\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FFFFFFE00000000; - ans = 64'h3FFFFF 400000000; - flags = 5'hC4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C4 "); - $fwrite(fp,"1302300\n"); - end - FInput1E = 64'hBFFDEFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1303301\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF01F00000000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1304302\n"); - end - FInput1E = 64'hED30001F00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h03FF00 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1305303\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1306304\n"); - end - FInput1E = 64'hC0AE000000000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'h7EBFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1307305\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1308306\n"); - end - FInput1E = 64'h402FFBFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h028EFD2B00000000; - ans = 64'hA7387A D00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1309307\n"); - end - FInput1E = 64'hBFE07FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1310308\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF001F8000000000; - ans = 64'h000000 800000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1311309\n"); - end - FInput1E = 64'hBCA000DF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1312310\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4D01FFFF00000000; - ans = 64'hFFEFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1313311\n"); - end - FInput1E = 64'hCCF0000000000000; - FInput2E = 64'h007BFFF 00000000; - FInput3E = 64'h8001FFFF00000000; - ans = 64'hFFFFC0 300000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"1314312\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1315313\n"); - end - FInput1E = 64'h3E5FFFFF00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h4BFFBFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1316314\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h2A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2A "); - $fwrite(fp,"1317315\n"); - end - FInput1E = 64'hBEB0007F00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'h39FFFFFF00000000; - ans = 64'h000040 F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1318316\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFF00003 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1319317\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h023FFFFF00000000; - ans = 64'hFFFEFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1320318\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFFF3FFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1321319\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF80007FF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1322320\n"); - end - FInput1E = 64'hFFEFFFFB00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hE100000400000000; - ans = 64'h002000 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1323321\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1324322\n"); - end - FInput1E = 64'h4D90020000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h005F65C200000000; - ans = 64'h7D14C1 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1325323\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1326324\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h7200000000000000; - ans = 64'h07FFFF 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1327325\n"); - end - FInput1E = 64'hC7F0001F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1328326\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9201000000000000; - ans = 64'h010000 400000000; - flags = 5'hC7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C7 "); - $fwrite(fp,"1329327\n"); - end - FInput1E = 64'h7FF126C200000000; - FInput2E = 64'hE67B141 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1330328\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1DFDFFFF00000000; - ans = 64'hFF7FFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1331329\n"); - end - FInput1E = 64'h3FEB276D00000000; - FInput2E = 64'h4D73DEC 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'hBFFFFF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1332330\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1333331\n"); - end - FInput1E = 64'hC1FF7FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1FDC514C00000000; - ans = 64'hD8EFEF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1334332\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1335333\n"); - end - FInput1E = 64'h4038BD0800000000; - FInput2E = 64'h7D8A2A9 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000013 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1336334\n"); - end - FInput1E = 64'hFFE58B0C00000000; - FInput2E = 64'hBAA92D5 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1337335\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFDFF00000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1338336\n"); - end - FInput1E = 64'h3FC07FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1339337\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hEEFFFDFF00000000; - ans = 64'hFFFFF8 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1340338\n"); - end - FInput1E = 64'h4000200000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h036B89EB00000000; - ans = 64'h064874 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1341339\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1342340\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'hFFFC07E 00000000; - FInput3E = 64'hFCFF800200000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1343341\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1344342\n"); - end - FInput1E = 64'h7FF013FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h180000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1345343\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h07FFFBF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1346344\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F00001700000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"1347345\n"); - end - FInput1E = 64'h3FCFFF8000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hB9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B9 "); - $fwrite(fp,"1348346\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFF7FFD00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1349347\n"); - end - FInput1E = 64'hC7F00FFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'h3C00000000000000; - ans = 64'h000043 B00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"1350348\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1351349\n"); - end - FInput1E = 64'hC1CFFDFF00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'hD1FFFFFF00000000; - ans = 64'hFFFFBF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1352350\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1353351\n"); - end - FInput1E = 64'h3F8FFF7F00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h003FFF 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1354352\n"); - end - FInput1E = 64'hC1CDFFFB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1355353\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h027FFFFF00000000; - ans = 64'hFC0000 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1356354\n"); - end - FInput1E = 64'h2B70000000000000; - FInput2E = 64'h00FFF7F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hB4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B4 "); - $fwrite(fp,"1357355\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hFFFF70 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1358356\n"); - end - FInput1E = 64'hBF90000400000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hDCF8000000000000; - ans = 64'h400000 400000000; - flags = 5'hF3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F3 "); - $fwrite(fp,"1359357\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1360358\n"); - end - FInput1E = 64'h068FFFFF00000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'h0CFFFFFF00000000; - ans = 64'hE01FFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1361359\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F3 "); - $fwrite(fp,"1362360\n"); - end - FInput1E = 64'hBD8FDFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h03993D6500000000; - ans = 64'h9AC7D9 C00000000; - flags = 5'hF9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F9 "); - $fwrite(fp,"1363361\n"); - end - FInput1E = 64'hBFC0000000000000; - FInput2E = 64'h0001FFC 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1364362\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8007FFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1365363\n"); - end - FInput1E = 64'hC1C0BEDA00000000; - FInput2E = 64'hBC19E72 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1366364\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFC00800000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1367365\n"); - end - FInput1E = 64'h4010000100000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hF900000000000000; - ans = 64'h081000 600000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1368366\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1369367\n"); - end - FInput1E = 64'h2240010000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'hFD00000300000000; - ans = 64'h800000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1370368\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 500000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1371369\n"); - end - FInput1E = 64'h3CAC454E00000000; - FInput2E = 64'h047198B 00000000; - FInput3E = 64'h0383FFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1372370\n"); - end - FInput1E = 64'h3F80000000000000; - FInput2E = 64'h007BFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1373371\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFEF00000000; - ans = 64'hFFFFFC 400000000; - flags = 5'h7D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7D "); - $fwrite(fp,"1374372\n"); - end - FInput1E = 64'hC9215ED600000000; - FInput2E = 64'h427EB9F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1375373\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C00002000000000; - ans = 64'h000200 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1376374\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFFFC07F 00000000; - FInput3E = 64'h1F0FFFFF00000000; - ans = 64'hEFFFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1377375\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1378376\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h00FFFFC000000000; - ans = 64'h7FFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1379377\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1380378\n"); - end - FInput1E = 64'h470D88AA00000000; - FInput2E = 64'h1189141 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h3FFFEF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1381379\n"); - end - FInput1E = 64'hC0952EFA00000000; - FInput2E = 64'h44676E2 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1382380\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E07FFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"1383381\n"); - end - FInput1E = 64'h43EEFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1384382\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF18820A300000000; - ans = 64'h493201 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1385383\n"); - end - FInput1E = 64'h55D0400000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'hFCFF08E400000000; - ans = 64'h9234AA B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1386384\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1387385\n"); - end - FInput1E = 64'h30F0000000000000; - FInput2E = 64'h0000006 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'h0007FF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1388386\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"1389387\n"); - end - FInput1E = 64'h2E1FFFFF00000000; - FInput2E = 64'hFF7FEFF 00000000; - FInput3E = 64'h201B017C00000000; - ans = 64'h892B98 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"1390388\n"); - end - FInput1E = 64'h4344733600000000; - FInput2E = 64'hCAF7BD8 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1391389\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3E00040000000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1392390\n"); - end - FInput1E = 64'h5FDFFFFF00000000; - FInput2E = 64'hFF80007 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hEE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EE "); - $fwrite(fp,"1393391\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hBF05000000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1394392\n"); - end - FInput1E = 64'h4000000100000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hF88000 A00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1395393\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1396394\n"); - end - FInput1E = 64'h4060000000000000; - FInput2E = 64'h7FFF7FF 00000000; - FInput3E = 64'hFFFBFFFF00000000; - ans = 64'hFFDFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1397395\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"1398396\n"); - end - FInput1E = 64'h41003FFF00000000; - FInput2E = 64'hFFFF000 00000000; - FInput3E = 64'h0007DFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"1399397\n"); - end - FInput1E = 64'hBF043BE800000000; - FInput2E = 64'h83B8A46 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1400398\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1EFFFFC000000000; - ans = 64'h07FFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1401399\n"); - end - FInput1E = 64'h4710000000000000; - FInput2E = 64'h3FFBFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1402400\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hC15FD7FE00000000; - ans = 64'hF4636B 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1403401\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'h081FFFE 00000000; - FInput3E = 64'h80FFFFFE00000000; - ans = 64'hFF8000 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1404402\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1405403\n"); - end - FInput1E = 64'h4800000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h800FD82700000000; - ans = 64'h7B0D05 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1406404\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"1407405\n"); - end - FInput1E = 64'hBFE4080000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3ED1750B00000000; - ans = 64'hF8AC34 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1408406\n"); - end - FInput1E = 64'hC01FFFFE00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1409407\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hFFBFFF C00000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"1410408\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'hFE7FFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1411409\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3CA224B800000000; - ans = 64'h0603AD 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1412410\n"); - end - FInput1E = 64'h43E000FF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFD00008100000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1413411\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1414412\n"); - end - FInput1E = 64'hB810000000000000; - FInput2E = 64'h007BFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h00083E 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1415413\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h23; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"23 "); - $fwrite(fp,"1416414\n"); - end - FInput1E = 64'h40C0000300000000; - FInput2E = 64'hFFFFFF8 00000000; - FInput3E = 64'hFE001FFF00000000; - ans = 64'hFEFFFE 600000000; - flags = 5'h58; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58 "); - $fwrite(fp,"1417415\n"); - end - FInput1E = 64'hC3F2EEFD00000000; - FInput2E = 64'hBDFD7B8 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1418416\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF00007FF00000000; - ans = 64'h000000 000000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"1419417\n"); - end - FInput1E = 64'h24EFFF8000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1420418\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h177DFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1421419\n"); - end - FInput1E = 64'h7470000000000000; - FInput2E = 64'h01EFFFE 00000000; - FInput3E = 64'hF0FFFFE000000000; - ans = 64'h07FFFE C00000000; - flags = 5'h9D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9D "); - $fwrite(fp,"1422420\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1423421\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFC0004 00000000; - FInput3E = 64'hFDFFFFBF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1424422\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1425423\n"); - end - FInput1E = 64'h3C0F521000000000; - FInput2E = 64'hCA69DA2 00000000; - FInput3E = 64'hFBFFFFF000000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h11; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11 "); - $fwrite(fp,"1426424\n"); - end - FInput1E = 64'h3F85787E00000000; - FInput2E = 64'hEBD2DD6 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1427425\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3D36483300000000; - ans = 64'h6DF9A5 C00000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"1428426\n"); - end - FInput1E = 64'h40FFFD7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1429427\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h953FFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1430428\n"); - end - FInput1E = 64'h4030040000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF6FFFFFF00000000; - ans = 64'hC0000F 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1431429\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1432430\n"); - end - FInput1E = 64'h4B90000000000000; - FInput2E = 64'h0003800 00000000; - FInput3E = 64'h3E01FF0000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1433431\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h76; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"76 "); - $fwrite(fp,"1434432\n"); - end - FInput1E = 64'h8012729800000000; - FInput2E = 64'h1831FA0 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h8007FF 900000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1435433\n"); - end - FInput1E = 64'hC035D78B00000000; - FInput2E = 64'h16AD004 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1436434\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFE7F00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h16; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"16 "); - $fwrite(fp,"1437435\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0018000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1438436\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE3FBFFFF00000000; - ans = 64'hF7FFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1439437\n"); - end - FInput1E = 64'h802FFFF000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h018871A500000000; - ans = 64'h9D1E46 700000000; - flags = 5'hF4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F4 "); - $fwrite(fp,"1440438\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1441439\n"); - end - FInput1E = 64'hBFF3FFFF00000000; - FInput2E = 64'hF7FFFFE 00000000; - FInput3E = 64'h9E00000000000000; - ans = 64'h0000FC 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1442440\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1443441\n"); - end - FInput1E = 64'h404FEFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h3480000F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"1444442\n"); - end - FInput1E = 64'h4C1077FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1445443\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF25ACCA00000000; - ans = 64'hF9A9A1 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1446444\n"); - end - FInput1E = 64'hC3E00FFF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1447445\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hF8000E 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1448446\n"); - end - FInput1E = 64'h402FEFFF00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'hEC00000100000000; - ans = 64'h000040 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1449447\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1450448\n"); - end - FInput1E = 64'hBFC0400000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'h7FBE7B9400000000; - ans = 64'hA63C2B C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1451449\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1452450\n"); - end - FInput1E = 64'h41CFF80000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'h00FDFFFF00000000; - ans = 64'hFFBFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1453451\n"); - end - FInput1E = 64'h43CFF00800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1454452\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hBFBFFF 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1455453\n"); - end - FInput1E = 64'h183C000000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1456454\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFBFFFCFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1457455\n"); - end - FInput1E = 64'hB7FFF7FF00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'h1FFDFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h57; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"57 "); - $fwrite(fp,"1458456\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1459457\n"); - end - FInput1E = 64'hBA33FFFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h107FFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1460458\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1461459\n"); - end - FInput1E = 64'h3A95AF1900000000; - FInput2E = 64'h2866E6A 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h5FFFFE 400000000; - flags = 5'hD7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D7 "); - $fwrite(fp,"1462460\n"); - end - FInput1E = 64'h432F000000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1463461\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1464462\n"); - end - FInput1E = 64'h9FCFFFFF00000000; - FInput2E = 64'hFDFF7FE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1465463\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1CDB533E00000000; - ans = 64'hAA2541 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1466464\n"); - end - FInput1E = 64'hB9FDD62F00000000; - FInput2E = 64'h5A67EF4 00000000; - FInput3E = 64'h81FFFFFF00000000; - ans = 64'hF00010 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1467465\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1468466\n"); - end - FInput1E = 64'h7FDFFF7F00000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'hFD04000000000000; - ans = 64'h003FFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1469467\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1470468\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFF00C00000000000; - ans = 64'h000000 B00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1471469\n"); - end - FInput1E = 64'h380FFFFE00000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1472470\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFC0000000000; - ans = 64'h000000 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1473471\n"); - end - FInput1E = 64'h7FE0200000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h12; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12 "); - $fwrite(fp,"1474472\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF3FFFFFF00000000; - ans = 64'hFFFFE7 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1475473\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'hF900003B00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h8E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8E "); - $fwrite(fp,"1476474\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1477475\n"); - end - FInput1E = 64'hC3C00FFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h5B00000000000000; - ans = 64'hFBFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1478476\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1479477\n"); - end - FInput1E = 64'hFFD0002000000000; - FInput2E = 64'h00001FE 00000000; - FInput3E = 64'hFBFFFF4000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1480478\n"); - end - FInput1E = 64'hFC1FFFFF00000000; - FInput2E = 64'hFF83FFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1481479\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFDFDF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1482480\n"); - end - FInput1E = 64'h41D0000000000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1483481\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4C0001FF00000000; - ans = 64'hFFFFF6 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1484482\n"); - end - FInput1E = 64'hC020008000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h3C00400000000000; - ans = 64'h000080 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1485483\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1486484\n"); - end - FInput1E = 64'h4170000000000000; - FInput2E = 64'h0003000 00000000; - FInput3E = 64'hFEA1AFB100000000; - ans = 64'h96D239 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1487485\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1488486\n"); - end - FInput1E = 64'h46BFFFFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'h011E714F00000000; - ans = 64'h6E0F93 F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1489487\n"); - end - FInput1E = 64'h3F2EFFFF00000000; - FInput2E = 64'hFFEFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1490488\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h000000FF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1491489\n"); - end - FInput1E = 64'hBCA0801000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1492490\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3307EFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1493491\n"); - end - FInput1E = 64'hB6B0000000000000; - FInput2E = 64'h100007F 00000000; - FInput3E = 64'h8140000000000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1494492\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1495493\n"); - end - FInput1E = 64'h801DFFC000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3DBFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1496494\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1497495\n"); - end - FInput1E = 64'h40DFE00000000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'hFDFFFFBF00000000; - ans = 64'h000000 C00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"1498496\n"); - end - FInput1E = 64'h41EFFFFF00000000; - FInput2E = 64'hFFFE7FF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1499497\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1597388600000000; - ans = 64'h2F139E B00000000; - flags = 5'hEE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EE "); - $fwrite(fp,"1500498\n"); - end - FInput1E = 64'hC1D83AA500000000; - FInput2E = 64'h47FF003 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1501499\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07E0000000000000; - ans = 64'h3FFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1502500\n"); - end - FInput1E = 64'hBF90FFFF00000000; - FInput2E = 64'hFFEFFFE 00000000; - FInput3E = 64'hFD7573FA00000000; - ans = 64'h472376 C00000000; - flags = 5'hE8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E8 "); - $fwrite(fp,"1503501\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1504502\n"); - end - FInput1E = 64'hC02FEF0000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEC00300000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1505503\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hCC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CC "); - $fwrite(fp,"1506504\n"); - end - FInput1E = 64'h41E0000100000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'h3D07BFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1507505\n"); - end - FInput1E = 64'hC08FEF7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1508506\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF86F088B00000000; - ans = 64'hA9BF73 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1509507\n"); - end - FInput1E = 64'h4001FFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hF8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F8 "); - $fwrite(fp,"1510508\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3EF7FFFF00000000; - ans = 64'hFFFFFC 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1511509\n"); - end - FInput1E = 64'h40445F9000000000; - FInput2E = 64'h2EC1099 00000000; - FInput3E = 64'h128E5F9200000000; - ans = 64'h918BEF C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1512510\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1513511\n"); - end - FInput1E = 64'hC023673100000000; - FInput2E = 64'h5AE41FD 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'hFEFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1514512\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1515513\n"); - end - FInput1E = 64'hFFDFFFFC00000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h7E7FFFC000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1516514\n"); - end - FInput1E = 64'hC7FFFAFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1517515\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34120A0000000000; - ans = 64'h448FE1 B00000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"1518516\n"); - end - FInput1E = 64'h002FFE0000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1519517\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFEFFF00000000; - ans = 64'hFFFFBF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1520518\n"); - end - FInput1E = 64'h3981000100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F02000000000000; - ans = 64'h000040 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1521519\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1522520\n"); - end - FInput1E = 64'hB7E1000000000000; - FInput2E = 64'h000007E 00000000; - FInput3E = 64'h7EF1480100000000; - ans = 64'h635DF3 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1523521\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1524522\n"); - end - FInput1E = 64'hC021FF4800000000; - FInput2E = 64'h5CC38A5 00000000; - FInput3E = 64'h4400000000000000; - ans = 64'hFFFFBF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1525523\n"); - end - FInput1E = 64'h3E90000000000000; - FInput2E = 64'h001FBFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1526524\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'hFFFF80 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1527525\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0FFF7FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1528526\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC200000000000000; - ans = 64'h00101F 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1529527\n"); - end - FInput1E = 64'hC0DFFE0000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h3D4C23A700000000; - ans = 64'h2F52B4 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1530528\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1531529\n"); - end - FInput1E = 64'hC80FFFFF00000000; - FInput2E = 64'hBFF0000 00000000; - FInput3E = 64'h3CEDFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1532530\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1533531\n"); - end - FInput1E = 64'h30F01FF000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFAFFFFEF00000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1534532\n"); - end - FInput1E = 64'h43D377A000000000; - FInput2E = 64'hDECB236 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1535533\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000100000000; - ans = 64'hDFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1536534\n"); - end - FInput1E = 64'hFFDED28900000000; - FInput2E = 64'h944F3D6 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1537535\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5FFFFF7F00000000; - ans = 64'hFFFDFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1538536\n"); - end - FInput1E = 64'h42DFFFFF00000000; - FInput2E = 64'hFB7FFFF 00000000; - FInput3E = 64'h1F00003F00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1539537\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1540538\n"); - end - FInput1E = 64'h3FBFC00000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h021C817B00000000; - ans = 64'h2000C5 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1541539\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1542540\n"); - end - FInput1E = 64'h41DBFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000100000000; - ans = 64'h07FFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1543541\n"); - end - FInput1E = 64'hC1D8000000000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1544542\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h001FFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1545543\n"); - end - FInput1E = 64'h400D5B4400000000; - FInput2E = 64'h52386A8 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1546544\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0300803F00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1547545\n"); - end - FInput1E = 64'h4007FFFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'h80FFFFF700000000; - ans = 64'hFFF7FE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1548546\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1549547\n"); - end - FInput1E = 64'hBFEA521100000000; - FInput2E = 64'h7119066 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h0007F6 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1550548\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1551549\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFEFFF6 00000000; - FInput3E = 64'h3CFFFFFD00000000; - ans = 64'hFFFFFF 100000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1552550\n"); - end - FInput1E = 64'h2C70001000000000; - FInput2E = 64'h0007FFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1553551\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD22E53BE00000000; - ans = 64'hBB21E4 200000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1554552\n"); - end - FInput1E = 64'hBF3FFFFB00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1555553\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFF8000000000; - ans = 64'h00007E 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1556554\n"); - end - FInput1E = 64'h4040000000000000; - FInput2E = 64'h0001006 00000000; - FInput3E = 64'hC400800000000000; - ans = 64'h080000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1557555\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1558556\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hF00001E 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hDFEFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1559557\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 600000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"1560558\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'h8002000 00000000; - FInput3E = 64'h6200000000000000; - ans = 64'h000000 400000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1561559\n"); - end - FInput1E = 64'h42C09CA800000000; - FInput2E = 64'h8D5CAFC 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1562560\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h05FC000000000000; - ans = 64'h00001F 800000000; - flags = 5'h92; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"92 "); - $fwrite(fp,"1563561\n"); - end - FInput1E = 64'h3FB0200000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1564562\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F7FFFFF00000000; - ans = 64'hFFFEFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1565563\n"); - end - FInput1E = 64'hBFDA40E000000000; - FInput2E = 64'h0E0D4B9 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFFC40 400000000; - flags = 5'h22; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22 "); - $fwrite(fp,"1566564\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1567565\n"); - end - FInput1E = 64'h512FC00000000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFFFDF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1568566\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1569567\n"); - end - FInput1E = 64'h977FFFFF00000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h7FFFBFFF00000000; - ans = 64'hFBFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1570568\n"); - end - FInput1E = 64'hFFF7294700000000; - FInput2E = 64'hB70B2CA 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1571569\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB1FFFFFF00000000; - ans = 64'hDFFFEF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1572570\n"); - end - FInput1E = 64'h3C20010100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1573571\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFCBAA000000000; - ans = 64'h3AB655 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1574572\n"); - end - FInput1E = 64'h500FF7FF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h5F0007FF00000000; - ans = 64'hE00000 200000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1575573\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1576574\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h000023F 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'hE00000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1577575\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1578576\n"); - end - FInput1E = 64'hC3E0000100000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'h021FFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1579577\n"); - end - FInput1E = 64'hC3D0400000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1580578\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h067FFFFD00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1581579\n"); - end - FInput1E = 64'h7FDFFFFF00000000; - FInput2E = 64'h7FFDFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h45; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45 "); - $fwrite(fp,"1582580\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h02BF5E0000000000; - ans = 64'h876CF5 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1583581\n"); - end - FInput1E = 64'hBADFFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hEC009FFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"1584582\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1585583\n"); - end - FInput1E = 64'h0D2FEFBF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h14FE000000000000; - ans = 64'h020000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1586584\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"1587585\n"); - end - FInput1E = 64'hC3429D4A00000000; - FInput2E = 64'hA4E2E43 00000000; - FInput3E = 64'h7E46248600000000; - ans = 64'hFB57A0 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1588586\n"); - end - FInput1E = 64'h4030000100000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1589587\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h09FFFFFF00000000; - ans = 64'hFFFFE0 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1590588\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1591589\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3C001FFF00000000; - ans = 64'hFFFFDF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1592590\n"); - end - FInput1E = 64'h4024003F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0C00000100000000; - ans = 64'h00003F 400000000; - flags = 5'h1B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1B "); - $fwrite(fp,"1593591\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1594592\n"); - end - FInput1E = 64'hBFE03FFF00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'h1F0C222A00000000; - ans = 64'h4CE0AF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1595593\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 400000000; - flags = 5'hB5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B5 "); - $fwrite(fp,"1596594\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h2000003 00000000; - FInput3E = 64'h7FFFC00000000000; - ans = 64'h0007FF 900000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"1597595\n"); - end - FInput1E = 64'h4060000200000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1598596\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F0001FF00000000; - ans = 64'hFFDFFF C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1599597\n"); - end - FInput1E = 64'h3FDF6AC500000000; - FInput2E = 64'h9BB8EAB 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1600598\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3D00000F00000000; - ans = 64'hFFDFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1601599\n"); - end - FInput1E = 64'h00118FA600000000; - FInput2E = 64'h18D0211 00000000; - FInput3E = 64'h9CB631CA00000000; - ans = 64'hC88ACA 400000000; - flags = 5'h81; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81 "); - $fwrite(fp,"1602600\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1603601\n"); - end - FInput1E = 64'h3F5F7FFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h3E5B93A000000000; - ans = 64'hABD0B6 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1604602\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1605603\n"); - end - FInput1E = 64'hBFEC24D300000000; - FInput2E = 64'hB848EAF 00000000; - FInput3E = 64'h23FFFFFF00000000; - ans = 64'h8001FE 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1606604\n"); - end - FInput1E = 64'hC030000100000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1607605\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h00037F C00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1608606\n"); - end - FInput1E = 64'hC9D78FE000000000; - FInput2E = 64'h108C103 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1609607\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C7BA1AC00000000; - ans = 64'h4984C2 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1610608\n"); - end - FInput1E = 64'hBD82000000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hFA1E91B800000000; - ans = 64'h31F9BB C00000000; - flags = 5'hD4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D4 "); - $fwrite(fp,"1611609\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1612610\n"); - end - FInput1E = 64'h7FF540A400000000; - FInput2E = 64'hCF9F6E9 00000000; - FInput3E = 64'h1A00002000000000; - ans = 64'h000FFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1613611\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1614612\n"); - end - FInput1E = 64'h41D0240000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA02200000000000; - ans = 64'h000000 300000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"1615613\n"); - end - FInput1E = 64'hA9633A6600000000; - FInput2E = 64'h152113F 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1616614\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h0FFF7F 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1617615\n"); - end - FInput1E = 64'hC730D1F800000000; - FInput2E = 64'h200010C 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1618616\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h06FFFEFF00000000; - ans = 64'hF80000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1619617\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'h8000002000000000; - ans = 64'h0007FF 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1620618\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1621619\n"); - end - FInput1E = 64'hC2BD8EEB00000000; - FInput2E = 64'h237178F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFF7FFC B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1622620\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1623621\n"); - end - FInput1E = 64'h40317FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h75FFFFFF00000000; - ans = 64'h01FFFF D00000000; - flags = 5'h74; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74 "); - $fwrite(fp,"1624622\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h003EFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1625623\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02FFFDFF00000000; - ans = 64'hFFFFBF 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1626624\n"); - end - FInput1E = 64'hC02FFFFE00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1627625\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2AFFFE0000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1628626\n"); - end - FInput1E = 64'h570FFFFF00000000; - FInput2E = 64'h8000010 00000000; - FInput3E = 64'h01027FFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"1629627\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1630628\n"); - end - FInput1E = 64'hFE7007FF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFF03E 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1631629\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1632630\n"); - end - FInput1E = 64'h3F60000000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'h03FFE00000000000; - ans = 64'h001FFF 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1633631\n"); - end - FInput1E = 64'h403891A800000000; - FInput2E = 64'h1BC540D 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1634632\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h015AEF2400000000; - ans = 64'hD87B81 A00000000; - flags = 5'hCC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CC "); - $fwrite(fp,"1635633\n"); - end - FInput1E = 64'hBFD2248800000000; - FInput2E = 64'hCB6537B 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1636634\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hC8FFFFFF00000000; - ans = 64'hEFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1637635\n"); - end - FInput1E = 64'hC001FFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'h80F9FFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1638636\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1639637\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hFBFFFFFE00000000; - ans = 64'h0007FF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1640638\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"1641639\n"); - end - FInput1E = 64'hC8FC000000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'hF100003F00000000; - ans = 64'h000000 800000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"1642640\n"); - end - FInput1E = 64'h40DE109600000000; - FInput2E = 64'hA4D957C 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1643641\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFE000000000000; - ans = 64'h000001 900000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1644642\n"); - end - FInput1E = 64'hC7FFDFFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1645643\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h38FFFF8000000000; - ans = 64'h0007FF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1646644\n"); - end - FInput1E = 64'hC020020000000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h80902EB100000000; - ans = 64'h23CFA9 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1647645\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1648646\n"); - end - FInput1E = 64'hBFD0400000000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'h32401FFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1649647\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1650648\n"); - end - FInput1E = 64'h43C3BBA100000000; - FInput2E = 64'h9FBA8AB 00000000; - FInput3E = 64'h3EE6097A00000000; - ans = 64'h4BAED9 700000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1651649\n"); - end - FInput1E = 64'hC07FD7FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1652650\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E3FFFFF00000000; - ans = 64'h7FFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1653651\n"); - end - FInput1E = 64'hC3CFB7FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"1654652\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01395DB300000000; - ans = 64'h5F758F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1655653\n"); - end - FInput1E = 64'h41FFFFFF00000000; - FInput2E = 64'hFFFBFDF 00000000; - FInput3E = 64'h0A00000000000000; - ans = 64'h03FDFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1656654\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1657655\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'hFC2C6F3400000000; - ans = 64'h45DDB8 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1658656\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1659657\n"); - end - FInput1E = 64'hC3F0000000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h1CFE000000000000; - ans = 64'h003FFE C00000000; - flags = 5'h88; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"88 "); - $fwrite(fp,"1660658\n"); - end - FInput1E = 64'hC020002000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1661659\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02FF7FFF00000000; - ans = 64'hE00000 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1662660\n"); - end - FInput1E = 64'h3FE003FF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"1663661\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF8DFCE7500000000; - ans = 64'hDBD890 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1664662\n"); - end - FInput1E = 64'hBF12C14B00000000; - FInput2E = 64'hBCF0940 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h07FFFC D00000000; - flags = 5'h73; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"73 "); - $fwrite(fp,"1665663\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1666664\n"); - end - FInput1E = 64'h65860D4300000000; - FInput2E = 64'hFF1936A 00000000; - FInput3E = 64'h137FFFFF00000000; - ans = 64'hE00000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1667665\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1668666\n"); - end - FInput1E = 64'h43E0010000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h80FFFFFE00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1669667\n"); - end - FInput1E = 64'h3FEA42FD00000000; - FInput2E = 64'h490CC1F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1670668\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h066B25D200000000; - ans = 64'h388FBA 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1671669\n"); - end - FInput1E = 64'h42D0000000000000; - FInput2E = 64'h05FFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 200000000; - flags = 5'h7E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7E "); - $fwrite(fp,"1672670\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB3FFFFF00000000; - ans = 64'hFDFFFE 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1673671\n"); - end - FInput1E = 64'h4342CB9E00000000; - FInput2E = 64'h93CBD99 00000000; - FInput3E = 64'h893FFFF700000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1674672\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1675673\n"); - end - FInput1E = 64'h4100000000000000; - FInput2E = 64'h0408000 00000000; - FInput3E = 64'h5C00000000000000; - ans = 64'h0040FF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1676674\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1677675\n"); - end - FInput1E = 64'h4800000000000000; - FInput2E = 64'h2000040 00000000; - FInput3E = 64'h3F1788B900000000; - ans = 64'hE98D2D C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1678676\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'h83FFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1679677\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hE00000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1680678\n"); - end - FInput1E = 64'h3E3FF7FF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1681679\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EF0000000000000; - ans = 64'h000000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1682680\n"); - end - FInput1E = 64'h43FFFFFF00000000; - FInput2E = 64'hFFFFCFF 00000000; - FInput3E = 64'h1CFFFFFB00000000; - ans = 64'hF7FFFF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1683681\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1684682\n"); - end - FInput1E = 64'hB133C43700000000; - FInput2E = 64'h8BA5FA2 00000000; - FInput3E = 64'hCAFFBFFB00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1685683\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h11; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11 "); - $fwrite(fp,"1686684\n"); - end - FInput1E = 64'hC014CA4200000000; - FInput2E = 64'hABB6017 00000000; - FInput3E = 64'h01F7FFEF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h34; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34 "); - $fwrite(fp,"1687685\n"); - end - FInput1E = 64'hC1C0000000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1688686\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h2CFFFFDF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1689687\n"); - end - FInput1E = 64'h41CFFEFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1690688\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFDFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1691689\n"); - end - FInput1E = 64'hC030007F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF8FFFFFD00000000; - ans = 64'hFC0000 C00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"1692690\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1693691\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h003FF6 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1694692\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 200000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1695693\n"); - end - FInput1E = 64'h7FF01FFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'hD100000000000000; - ans = 64'h000FFF B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1696694\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hE1FFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1697695\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h009FDBFF00000000; - ans = 64'hE61B1D 300000000; - flags = 5'h37; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37 "); - $fwrite(fp,"1698696\n"); - end - FInput1E = 64'h3B5FFFFF00000000; - FInput2E = 64'hFFDEFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1699697\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h111FFFFF00000000; - ans = 64'hFFFFF7 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1700698\n"); - end - FInput1E = 64'h37F125D800000000; - FInput2E = 64'h9FABC96 00000000; - FInput3E = 64'h01FFFFC000000000; - ans = 64'h1FFFFF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1701699\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1702700\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h00FC000 00000000; - FInput3E = 64'hDCFFFFFF00000000; - ans = 64'h7F7FFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1703701\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1704702\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFEFBFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1705703\n"); - end - FInput1E = 64'h3FD9BCB900000000; - FInput2E = 64'h01F0E44 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1706704\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h04F8000000000000; - ans = 64'h0000FF C00000000; - flags = 5'h33; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33 "); - $fwrite(fp,"1707705\n"); - end - FInput1E = 64'h43CFFFFF00000000; - FInput2E = 64'h80001FF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"1708706\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80FFFFFC00000000; - ans = 64'h000010 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1709707\n"); - end - FInput1E = 64'hA21FFF7F00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hF600000000000000; - ans = 64'h400001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1710708\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1711709\n"); - end - FInput1E = 64'h01F0000000000000; - FInput2E = 64'h200003F 00000000; - FInput3E = 64'hFECF3B4500000000; - ans = 64'h904764 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1712710\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1713711\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'h8000000 00000000; - FInput3E = 64'h77E703F200000000; - ans = 64'h890066 F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1714712\n"); - end - FInput1E = 64'hBF30000000000000; - FInput2E = 64'h07FFFF7 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1715713\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3E01FFFF00000000; - ans = 64'hFFEFFF 300000000; - flags = 5'hF9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F9 "); - $fwrite(fp,"1716714\n"); - end - FInput1E = 64'h62E7E7A100000000; - FInput2E = 64'h9ABB9B2 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1717715\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'h000001 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1718716\n"); - end - FInput1E = 64'hC80FF00300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h2C30141200000000; - ans = 64'h9CEFFC B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1719717\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1720718\n"); - end - FInput1E = 64'h43EFFFFB00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'hF33FFFFF00000000; - ans = 64'hFFFFF0 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1721719\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1722720\n"); - end - FInput1E = 64'hB810000000000000; - FInput2E = 64'h010001F 00000000; - FInput3E = 64'hCAFFFF7F00000000; - ans = 64'hFEFFFF 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1723721\n"); - end - FInput1E = 64'h3FB0070000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1724722\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3DF7FFFF00000000; - ans = 64'hFFFE00 C00000000; - flags = 5'h85; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85 "); - $fwrite(fp,"1725723\n"); - end - FInput1E = 64'h434847DE00000000; - FInput2E = 64'hAD0C1EC 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1726724\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE0FF800000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1727725\n"); - end - FInput1E = 64'h4001FFFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h9AFE0FFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"1728726\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1729727\n"); - end - FInput1E = 64'hC3E0007F00000000; - FInput2E = 64'hFF00000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h03FFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1730728\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1731729\n"); - end - FInput1E = 64'h4340000200000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'hFCEFFFBF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1732730\n"); - end - FInput1E = 64'hC060000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1733731\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1FDE388500000000; - ans = 64'h3C96C3 C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1734732\n"); - end - FInput1E = 64'h51A0000300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'h86; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"86 "); - $fwrite(fp,"1735733\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hBFFBFFFF00000000; - ans = 64'hF00000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1736734\n"); - end - FInput1E = 64'h3FAFE3FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h00041E 400000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"1737735\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1738736\n"); - end - FInput1E = 64'hC03FFFC000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h01C0000000000000; - ans = 64'h3FFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1739737\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h63; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63 "); - $fwrite(fp,"1740738\n"); - end - FInput1E = 64'hC03FFFFA00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E9C609400000000; - ans = 64'h883BB9 000000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"1741739\n"); - end - FInput1E = 64'h802FFFE000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1742740\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'h000100 C00000000; - flags = 5'h25; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25 "); - $fwrite(fp,"1743741\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1744742\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1700000000000000; - ans = 64'h000FFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1745743\n"); - end - FInput1E = 64'h3C03393500000000; - FInput2E = 64'h27BCC01 00000000; - FInput3E = 64'hF9FFDFFF00000000; - ans = 64'hFFFF80 C00000000; - flags = 5'hD2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D2 "); - $fwrite(fp,"1746744\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1747745\n"); - end - FInput1E = 64'hBC2FFE0100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE3FDFFFF00000000; - ans = 64'hFFFE00 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1748746\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1749747\n"); - end - FInput1E = 64'hBFE0010000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hEFDFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1750748\n"); - end - FInput1E = 64'h4340004000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1751749\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF0026AC00000000; - ans = 64'h620192 C00000000; - flags = 5'h64; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64 "); - $fwrite(fp,"1752750\n"); - end - FInput1E = 64'hC36FFEFF00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1753751\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0203FFFB00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1754752\n"); - end - FInput1E = 64'h41E31B3800000000; - FInput2E = 64'h68C8699 00000000; - FInput3E = 64'hFE3126A300000000; - ans = 64'hB04F36 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1755753\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1756754\n"); - end - FInput1E = 64'h3FB0240000000000; - FInput2E = 64'hE2D86DB 00000000; - FInput3E = 64'h1E7627DE00000000; - ans = 64'h9FB15A 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1757755\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF A00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1758756\n"); - end - FInput1E = 64'hAD3FFFFF00000000; - FInput2E = 64'hFFFFFDA 00000000; - FInput3E = 64'hFFFC947C00000000; - ans = 64'hF84A5E 400000000; - flags = 5'hC1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C1 "); - $fwrite(fp,"1759757\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h103FFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1760758\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0BFFFFFF00000000; - ans = 64'hBBFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1761759\n"); - end - FInput1E = 64'h4805A66800000000; - FInput2E = 64'hABFA310 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"1762760\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h032EB7F700000000; - ans = 64'h8E45BF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1763761\n"); - end - FInput1E = 64'h37EFFFFF00000000; - FInput2E = 64'hF8001FE 00000000; - FInput3E = 64'h8001000000000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"1764762\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1765763\n"); - end - FInput1E = 64'h000EFFFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'h7720000100000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1766764\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 A00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1767765\n"); - end - FInput1E = 64'h4015C82800000000; - FInput2E = 64'h4F166D3 00000000; - FInput3E = 64'h770001FF00000000; - ans = 64'hFEFFFF 400000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"1768766\n"); - end - FInput1E = 64'hC00556E700000000; - FInput2E = 64'h2A3D357 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1769767\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3EFFFFB700000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1770768\n"); - end - FInput1E = 64'hC020C1CD00000000; - FInput2E = 64'h64B59E2 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h71; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71 "); - $fwrite(fp,"1771769\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC300000000000000; - ans = 64'h00FFDE 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1772770\n"); - end - FInput1E = 64'hC01FFFFE00000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"1773771\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1774772\n"); - end - FInput1E = 64'hC80FFFFF00000000; - FInput2E = 64'hF800FFF 00000000; - FInput3E = 64'h02FF000000000000; - ans = 64'h0003FE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1775773\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1776774\n"); - end - FInput1E = 64'h4000008000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h342D2FD200000000; - ans = 64'hAC2BE0 300000000; - flags = 5'h44; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44 "); - $fwrite(fp,"1777775\n"); - end - FInput1E = 64'hA4301FFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1778776\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7BFEFFF700000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1779777\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h010007F 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1780778\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF000FFFF00000000; - ans = 64'hFFDFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1781779\n"); - end - FInput1E = 64'h3DE0500000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h010003FF00000000; - ans = 64'hFFFF80 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1782780\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1783781\n"); - end - FInput1E = 64'h41E0002000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hBE4BCB9000000000; - ans = 64'hB0C148 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1784782\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1785783\n"); - end - FInput1E = 64'h41D1F7FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE79A96500000000; - ans = 64'h758F19 F00000000; - flags = 5'hFA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FA "); - $fwrite(fp,"1786784\n"); - end - FInput1E = 64'hC0EFBFFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1787785\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFBFF00000000; - ans = 64'hFBFFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1788786\n"); - end - FInput1E = 64'hC26DFC1F00000000; - FInput2E = 64'hCC4B142 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1789787\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF8FFFFFB00000000; - ans = 64'hFFBFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1790788\n"); - end - FInput1E = 64'hC3ECC42400000000; - FInput2E = 64'hCF450FE 00000000; - FInput3E = 64'h58FF800000000000; - ans = 64'h001000 C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"1791789\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1792790\n"); - end - FInput1E = 64'h3FEFFFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0C00100000000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1793791\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1794792\n"); - end - FInput1E = 64'hBFBC000000000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'h3840000000000000; - ans = 64'h07FFFF 400000000; - flags = 5'h36; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36 "); - $fwrite(fp,"1795793\n"); - end - FInput1E = 64'hBF8FFFFF00000000; - FInput2E = 64'hEFFFFFB 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1796794\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02A8E22D00000000; - ans = 64'h4E804C B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"1797795\n"); - end - FInput1E = 64'h4A1C08A300000000; - FInput2E = 64'h0EEC3AA 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h17; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17 "); - $fwrite(fp,"1798796\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3000000000000000; - ans = 64'h1FFBFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1799797\n"); - end - FInput1E = 64'hC09EFFFF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'hFC0807FF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DD "); - $fwrite(fp,"1800798\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1801799\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'h01F0000 00000000; - FInput3E = 64'h2C8BA19800000000; - ans = 64'h5B1EFB F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1802800\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1803801\n"); - end - FInput1E = 64'hC2B0000000000000; - FInput2E = 64'h0201FFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'hDFFFFE F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1804802\n"); - end - FInput1E = 64'h3FDBCBF900000000; - FInput2E = 64'h3946858 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1805803\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1FF4000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1806804\n"); - end - FInput1E = 64'h4020000100000000; - FInput2E = 64'hFC00000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1807805\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFAFFFFF700000000; - ans = 64'hFFE000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1808806\n"); - end - FInput1E = 64'h480C25C400000000; - FInput2E = 64'h44C4F67 00000000; - FInput3E = 64'h7F1FFFFC00000000; - ans = 64'h000000 C00000000; - flags = 5'h55; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55 "); - $fwrite(fp,"1809807\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1810808\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hE004000 00000000; - FInput3E = 64'h8707C2A000000000; - ans = 64'h1E19E2 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1811809\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1812810\n"); - end - FInput1E = 64'hC00FFF7F00000000; - FInput2E = 64'hFFFFF80 00000000; - FInput3E = 64'hCAFFFDFF00000000; - ans = 64'h7FFFFE 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1813811\n"); - end - FInput1E = 64'hC57FF83F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1814812\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA71FC00000000000; - ans = 64'h000000 B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1815813\n"); - end - FInput1E = 64'h3E80000100000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h82; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82 "); - $fwrite(fp,"1816814\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hDD00000000000000; - ans = 64'h007C00 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1817815\n"); - end - FInput1E = 64'hBFE0010300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3D8A39EE00000000; - ans = 64'h49E6B9 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1818816\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1819817\n"); - end - FInput1E = 64'hBBE0000000000000; - FInput2E = 64'h0FEFFFF 00000000; - FInput3E = 64'hFDBFFFFF00000000; - ans = 64'hF00000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1820818\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1821819\n"); - end - FInput1E = 64'hC03017FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE6CB8C7400000000; - ans = 64'hD85E60 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1822820\n"); - end - FInput1E = 64'hC15FFFFF00000000; - FInput2E = 64'hF7FBFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1823821\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1807FFFF00000000; - ans = 64'hFFFF7F 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"1824822\n"); - end - FInput1E = 64'h3E75D76800000000; - FInput2E = 64'hDCF4BFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE D00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1825823\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCCDBCA2A00000000; - ans = 64'h8B0301 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1826824\n"); - end - FInput1E = 64'hB8F6441700000000; - FInput2E = 64'hC31EEB3 00000000; - FInput3E = 64'h1FFDFFFF00000000; - ans = 64'h800000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1827825\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1828826\n"); - end - FInput1E = 64'hBFB0080F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h01FFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1829827\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hA8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A8 "); - $fwrite(fp,"1830828\n"); - end - FInput1E = 64'hB80FFDFF00000000; - FInput2E = 64'hEFFFFFE 00000000; - FInput3E = 64'h1E00000000000000; - ans = 64'h000100 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1831829\n"); - end - FInput1E = 64'hC7FDFFFF00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1832830\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEFB871B000000000; - ans = 64'hB0279E C00000000; - flags = 5'h04; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"04 "); - $fwrite(fp,"1833831\n"); - end - FInput1E = 64'hBFC0000000000000; - FInput2E = 64'h200FFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"1834832\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03ADB86500000000; - ans = 64'h5B9CE1 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1835833\n"); - end - FInput1E = 64'hBD2FFFFF00000000; - FInput2E = 64'hFE7FFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h01EFFF C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1836834\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1837835\n"); - end - FInput1E = 64'h3807FFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h2700000200000000; - ans = 64'h0007FF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1838836\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 600000000; - flags = 5'h11; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"11 "); - $fwrite(fp,"1839837\n"); - end - FInput1E = 64'hC34AA4AD00000000; - FInput2E = 64'h429CD0E 00000000; - FInput3E = 64'h02FFFFC000000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1840838\n"); - end - FInput1E = 64'hC3E0000200000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1841839\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hAB007FFF00000000; - ans = 64'h7FFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1842840\n"); - end - FInput1E = 64'h3FA9087000000000; - FInput2E = 64'h9277135 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1843841\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE03BDA4300000000; - ans = 64'h2ACF89 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1844842\n"); - end - FInput1E = 64'h3EA0003F00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'h00007F 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"1845843\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1846844\n"); - end - FInput1E = 64'h51DFFE0000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00007F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1847845\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1848846\n"); - end - FInput1E = 64'hC1D1DFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE700FFFF00000000; - ans = 64'hFF7FFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1849847\n"); - end - FInput1E = 64'hC0DFFFFF00000000; - FInput2E = 64'hFFFE400 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1850848\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFBF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1851849\n"); - end - FInput1E = 64'hB65FFFFF00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"1852850\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h28FF9FFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1853851\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h7FFE000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h080004 A00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"1854852\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1855853\n"); - end - FInput1E = 64'h43F0000300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400001F00000000; - ans = 64'h7FFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1856854\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1857855\n"); - end - FInput1E = 64'hC800001F00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hEFFFFFFF00000000; - ans = 64'hFFDFDF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1858856\n"); - end - FInput1E = 64'h403FFFFE00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1859857\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h14FFFFFF00000000; - ans = 64'hDFFFFE 400000000; - flags = 5'hD4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D4 "); - $fwrite(fp,"1860858\n"); - end - FInput1E = 64'h37E0000000000000; - FInput2E = 64'h400000F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"1861859\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE3FFFFFF00000000; - ans = 64'hEFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1862860\n"); - end - FInput1E = 64'h53AFF00000000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'h4BFFFFFF00000000; - ans = 64'h0001FF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1863861\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1864862\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'h3EF6606F00000000; - ans = 64'h217640 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1865863\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1866864\n"); - end - FInput1E = 64'h37FFFFFE00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'h691FFFFF00000000; - ans = 64'hFFFFEF 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"1867865\n"); - end - FInput1E = 64'h068FF1FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1868866\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3402000000000000; - ans = 64'h000400 A00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1869867\n"); - end - FInput1E = 64'h43E0002000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1870868\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF64BF92000000000; - ans = 64'h13BFD1 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1871869\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'h1F00100000000000; - ans = 64'h00FFFE C00000000; - flags = 5'h24; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24 "); - $fwrite(fp,"1872870\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1873871\n"); - end - FInput1E = 64'hC80FBEFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0B5C30F400000000; - ans = 64'h2D3F60 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1874872\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1875873\n"); - end - FInput1E = 64'h421000FE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB638FD000000000; - ans = 64'hB7855F B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"1876874\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hBFFFFFD 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1877875\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7600000F00000000; - ans = 64'hFFFFBF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1878876\n"); - end - FInput1E = 64'hC01D827E00000000; - FInput2E = 64'hB8DD626 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h22; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22 "); - $fwrite(fp,"1879877\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8500400000000000; - ans = 64'h001FFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1880878\n"); - end - FInput1E = 64'h41CFFFFE00000000; - FInput2E = 64'h0000004 00000000; - FInput3E = 64'h027CB1E800000000; - ans = 64'hC78D69 500000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1881879\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1882880\n"); - end - FInput1E = 64'h3E8FFFBF00000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'hFFFEFFFF00000000; - ans = 64'hFFFF80 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1883881\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h2A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2A "); - $fwrite(fp,"1884882\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hFFDFE0 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1885883\n"); - end - FInput1E = 64'h3EEA018000000000; - FInput2E = 64'h664759B 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1886884\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E25B84700000000; - ans = 64'h33CFDB 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1887885\n"); - end - FInput1E = 64'h404FFFBF00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F8 "); - $fwrite(fp,"1888886\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9900000000000000; - ans = 64'hFFFFDF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1889887\n"); - end - FInput1E = 64'h3FC3B5F000000000; - FInput2E = 64'h490E6B0 00000000; - FInput3E = 64'h7C003FF700000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1890888\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1891889\n"); - end - FInput1E = 64'h3FC0200000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'h1E0003FF00000000; - ans = 64'hEFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1892890\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1893891\n"); - end - FInput1E = 64'h3FC0001000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'h1DF8000000000000; - ans = 64'h800000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1894892\n"); - end - FInput1E = 64'h380F800000000000; - FInput2E = 64'h0000FFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1895893\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB00003F00000000; - ans = 64'hFBFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1896894\n"); - end - FInput1E = 64'h3FCD679C00000000; - FInput2E = 64'h2D63B0B 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1897895\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7050D3CB00000000; - ans = 64'h605A9C 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1898896\n"); - end - FInput1E = 64'h3B6FFFFF00000000; - FInput2E = 64'hFFFFFF9 00000000; - FInput3E = 64'h1B00000000000000; - ans = 64'h07FF7E 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1899897\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1900898\n"); - end - FInput1E = 64'h45FFFFFF00000000; - FInput2E = 64'hFFE0002 00000000; - FInput3E = 64'hF8FC07FF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1901899\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1902900\n"); - end - FInput1E = 64'hB7EFFFFE00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hEEFF800000000000; - ans = 64'h0FFFFE B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1903901\n"); - end - FInput1E = 64'h8400000000000000; - FInput2E = 64'h0000207 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1904902\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3D00000300000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"1905903\n"); - end - FInput1E = 64'hC68FFFF000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h78; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78 "); - $fwrite(fp,"1906904\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD000FFF00000000; - ans = 64'hFFDFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1907905\n"); - end - FInput1E = 64'h3FFFFE0000000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'hFAFFDBFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1908906\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1909907\n"); - end - FInput1E = 64'hBFB03FFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h00BFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1910908\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"1911909\n"); - end - FInput1E = 64'hC1F0000000000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'h02FFDEFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1912910\n"); - end - FInput1E = 64'hB07FFE0000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1913911\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFF4BFD300000000; - ans = 64'hFDB3AB 800000000; - flags = 5'h26; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"26 "); - $fwrite(fp,"1914912\n"); - end - FInput1E = 64'h3EA06AF100000000; - FInput2E = 64'h208BCC4 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1915913\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0507FFFF00000000; - ans = 64'hFFFFEE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1916914\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'h89FFFDFF00000000; - ans = 64'hFFDFFF 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1917915\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1918916\n"); - end - FInput1E = 64'h46F0000100000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'h3FFFF80700000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1919917\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"1920918\n"); - end - FInput1E = 64'h4160000000000000; - FInput2E = 64'h021FFFF 00000000; - FInput3E = 64'h1E00100800000000; - ans = 64'h000000 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1921919\n"); - end - FInput1E = 64'h0008000000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1922920\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1C007F7F00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1923921\n"); - end - FInput1E = 64'h3A6FFFFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 000000000; - flags = 5'hF5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F5 "); - $fwrite(fp,"1924922\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFCB4F36C00000000; - ans = 64'h6CEF01 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1925923\n"); - end - FInput1E = 64'h40C0000000000000; - FInput2E = 64'h0107FFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h401FFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"1926924\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1927925\n"); - end - FInput1E = 64'h63D0001000000000; - FInput2E = 64'h000001E 00000000; - FInput3E = 64'h3600000000000000; - ans = 64'h01EFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1928926\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1929927\n"); - end - FInput1E = 64'hC1C0000000000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'h45FFFF9000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1930928\n"); - end - FInput1E = 64'hB7FFFFFF00000000; - FInput2E = 64'hFFF8001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1931929\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h37FFF80F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1932930\n"); - end - FInput1E = 64'hC00FFE0000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hD6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D6 "); - $fwrite(fp,"1933931\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEA2578500000000; - ans = 64'h77AB47 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"1934932\n"); - end - FInput1E = 64'h3FBF1DC700000000; - FInput2E = 64'h3758723 00000000; - FInput3E = 64'h03DFFFFF00000000; - ans = 64'hBFFFFE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1935933\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1936934\n"); - end - FInput1E = 64'hBD60000000000000; - FInput2E = 64'h0002007 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1937935\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1938936\n"); - end - FInput1E = 64'hBCAFFFFC00000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'h1C00080000000000; - ans = 64'h03FFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1939937\n"); - end - FInput1E = 64'h5AE2000000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1940938\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00013F00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"1941939\n"); - end - FInput1E = 64'hC7E0808900000000; - FInput2E = 64'h2DEBDB0 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1942940\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FEFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1943941\n"); - end - FInput1E = 64'hC3FBB53000000000; - FInput2E = 64'hDCAC380 00000000; - FInput3E = 64'hCFFFFFFF00000000; - ans = 64'h00007F 500000000; - flags = 5'h1C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1C "); - $fwrite(fp,"1944942\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1945943\n"); - end - FInput1E = 64'h400FFFFD00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'h1200000300000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1946944\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1947945\n"); - end - FInput1E = 64'h3EDA57F500000000; - FInput2E = 64'hA788EF7 00000000; - FInput3E = 64'h12351E6F00000000; - ans = 64'h26876F 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"1948946\n"); - end - FInput1E = 64'hC1E0008000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1949947\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'hFFBBFF B00000000; - flags = 5'hF1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F1 "); - $fwrite(fp,"1950948\n"); - end - FInput1E = 64'hC260000000000000; - FInput2E = 64'h0001FFD 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"1951949\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hA0FFFFC000000000; - ans = 64'h000040 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1952950\n"); - end - FInput1E = 64'h59AEFFBF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h07F7FF C00000000; - flags = 5'hDA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DA "); - $fwrite(fp,"1953951\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1954952\n"); - end - FInput1E = 64'h41D0080000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'hFCE1BF1900000000; - ans = 64'hAC95A1 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"1955953\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1956954\n"); - end - FInput1E = 64'h2E8FFFFF00000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'h32EBCE1C00000000; - ans = 64'h75FFAD C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"1957955\n"); - end - FInput1E = 64'hFFFFFFFB00000000; - FInput2E = 64'hF800000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1958956\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hD402000000000000; - ans = 64'h00FFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1959957\n"); - end - FInput1E = 64'hBFCFBFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'h22; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22 "); - $fwrite(fp,"1960958\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0700000800000000; - ans = 64'h0003FE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1961959\n"); - end - FInput1E = 64'h41DF5FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'h000040 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1962960\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1963961\n"); - end - FInput1E = 64'hA89FC00000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFE1FFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"1964962\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h0C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0C "); - $fwrite(fp,"1965963\n"); - end - FInput1E = 64'h4D858A7000000000; - FInput2E = 64'hD0C3994 00000000; - FInput3E = 64'hF900000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1966964\n"); - end - FInput1E = 64'h801FF7FF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1967965\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h022D0DE300000000; - ans = 64'h1B5DFA 300000000; - flags = 5'hA7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A7 "); - $fwrite(fp,"1968966\n"); - end - FInput1E = 64'h43E0080000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h2B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2B "); - $fwrite(fp,"1969967\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hBBFFFFF700000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"1970968\n"); - end - FInput1E = 64'hC3FFFFFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hFE0007FF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1971969\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1972970\n"); - end - FInput1E = 64'hBFEFFEEF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hB5626ADD00000000; - ans = 64'hC86A70 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"1973971\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1974972\n"); - end - FInput1E = 64'h47F0000000000000; - FInput2E = 64'h7FFF7FE 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h000001 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1975973\n"); - end - FInput1E = 64'h38D46BE100000000; - FInput2E = 64'h2713284 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1976974\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F00000200000000; - ans = 64'h00FFFE 400000000; - flags = 5'hCC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CC "); - $fwrite(fp,"1977975\n"); - end - FInput1E = 64'h678FFFC000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1978976\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8D00000000000000; - ans = 64'h0011FF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1979977\n"); - end - FInput1E = 64'h419FFFFF00000000; - FInput2E = 64'hFF01FFF 00000000; - FInput3E = 64'hFC00000700000000; - ans = 64'hFFFFFD 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1980978\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1981979\n"); - end - FInput1E = 64'hC7EC000000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'h6510000100000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1982980\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1983981\n"); - end - FInput1E = 64'hC3FFFFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFF7FFF 700000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"1984982\n"); - end - FInput1E = 64'hF3F001FF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1985983\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1F00000700000000; - ans = 64'hDFFFFF 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"1986984\n"); - end - FInput1E = 64'hC3D0040000000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"1987985\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB0FFFFF000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"1988986\n"); - end - FInput1E = 64'h8DCFFFFF00000000; - FInput2E = 64'hFD7FFFF 00000000; - FInput3E = 64'h16FFEFFF00000000; - ans = 64'hFFF7FE C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1989987\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"1990988\n"); - end - FInput1E = 64'h47F0000000000000; - FInput2E = 64'h0020007 00000000; - FInput3E = 64'hAF00002000000000; - ans = 64'h03FFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"1991989\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"1992990\n"); - end - FInput1E = 64'hC06DF2B300000000; - FInput2E = 64'hD0206F2 00000000; - FInput3E = 64'hC2FFFFFF00000000; - ans = 64'hFFFDBF 400000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"1993991\n"); - end - FInput1E = 64'h871FFFFF00000000; - FInput2E = 64'hDFFFFF0 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1994992\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF88B0EAF00000000; - ans = 64'hB84C14 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"1995993\n"); - end - FInput1E = 64'hC3D7FFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"1996994\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F39AB8200000000; - ans = 64'h2077FB 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"1997995\n"); - end - FInput1E = 64'h3F40000100000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'hF61001FF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"1998996\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"1999997\n"); - end - FInput1E = 64'h4033FDFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EFFFC0000000000; - ans = 64'h010000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2000998\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2001999\n"); - end - FInput1E = 64'h434007FF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'hFFFDFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2003000\n"); - end - FInput1E = 64'h43CE7FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2004001\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0E0C026000000000; - ans = 64'hBBEE39 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2005002\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h80000FE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2006003\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF5FFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2007004\n"); - end - FInput1E = 64'h3B8FFFFF00000000; - FInput2E = 64'hE7FFFFE 00000000; - FInput3E = 64'h80FE000000000000; - ans = 64'h7FFFFE 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2008005\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2009006\n"); - end - FInput1E = 64'hBFEBFFFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h002400 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2010007\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2011008\n"); - end - FInput1E = 64'hBFC0000200000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h77FFFFFF00000000; - ans = 64'h00001F 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"2012009\n"); - end - FInput1E = 64'h401BA44E00000000; - FInput2E = 64'hF273A5B 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2013010\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3BFFFFFF00000000; - ans = 64'hDFFFDF 400000000; - flags = 5'h61; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"61 "); - $fwrite(fp,"2014011\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2015012\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFC007FFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2016013\n"); - end - FInput1E = 64'h3F907FFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h3EFFFFDF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2017014\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2018015\n"); - end - FInput1E = 64'h7FFDFFFF00000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'hA800040000000000; - ans = 64'h0001FF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2019016\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2020017\n"); - end - FInput1E = 64'h3F50400100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03083BDF00000000; - ans = 64'h4E8292 300000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"2021018\n"); - end - FInput1E = 64'h41E0001000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2022019\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFA00010000000000; - ans = 64'h0000FE 900000000; - flags = 5'h98; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"98 "); - $fwrite(fp,"2023020\n"); - end - FInput1E = 64'hC1EB615700000000; - FInput2E = 64'h5FFCB1A 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2024021\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h48817ADB00000000; - ans = 64'h19B661 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2025022\n"); - end - FInput1E = 64'h43D0800000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'h7F7FFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2026023\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2027024\n"); - end - FInput1E = 64'h41F641A300000000; - FInput2E = 64'hA16102C 00000000; - FInput3E = 64'h07003C0000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2028025\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2029026\n"); - end - FInput1E = 64'h38168A9100000000; - FInput2E = 64'hA4DADB8 00000000; - FInput3E = 64'h0300000F00000000; - ans = 64'hFFE000 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2030027\n"); - end - FInput1E = 64'h43C7844900000000; - FInput2E = 64'hA301E69 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2031028\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1600000000000000; - ans = 64'h01001E 300000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"2032029\n"); - end - FInput1E = 64'h41A0080000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"2033030\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3CFF7FFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2034031\n"); - end - FInput1E = 64'h403FFFFF00000000; - FInput2E = 64'hC0000FF 00000000; - FInput3E = 64'h21FFFFF800000000; - ans = 64'h01FFFF 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2035032\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2036033\n"); - end - FInput1E = 64'hFFD0001000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hDFFDFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2037034\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 600000000; - flags = 5'h98; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"98 "); - $fwrite(fp,"2038035\n"); - end - FInput1E = 64'hB81FFFF900000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F60000000000000; - ans = 64'h000000 C00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2039036\n"); - end - FInput1E = 64'hC3E8B5EE00000000; - FInput2E = 64'hB60728F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2040037\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFE010 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2041038\n"); - end - FInput1E = 64'h3AD8000000000000; - FInput2E = 64'h0000004 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h7B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7B "); - $fwrite(fp,"2042039\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h00000C 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2043040\n"); - end - FInput1E = 64'h406003FF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2044041\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2045042\n"); - end - FInput1E = 64'hBF1D6A2200000000; - FInput2E = 64'h9EF496E 00000000; - FInput3E = 64'h8084951300000000; - ans = 64'h2AB95D C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2046043\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2047044\n"); - end - FInput1E = 64'h8009AD3800000000; - FInput2E = 64'h4A14058 00000000; - FInput3E = 64'hBA00000000000000; - ans = 64'h020010 400000000; - flags = 5'hD4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D4 "); - $fwrite(fp,"2048045\n"); - end - FInput1E = 64'h665FFFFF00000000; - FInput2E = 64'hFDFDFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2049046\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF050311F00000000; - ans = 64'h038A72 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2050047\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2051048\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h9BFFFFFF00000000; - ans = 64'h00001F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2052049\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h1EFFFFEF00000000; - ans = 64'hFFFDFF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2053050\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2054051\n"); - end - FInput1E = 64'h40307FFF00000000; - FInput2E = 64'hFFFFFDE 00000000; - FInput3E = 64'h037931B400000000; - ans = 64'hF38F3B 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2055052\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2056053\n"); - end - FInput1E = 64'h37E1FFFD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF6FFC00000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2057054\n"); - end - FInput1E = 64'hBAD1CB4700000000; - FInput2E = 64'h3A69E25 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2058055\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h9508000000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2059056\n"); - end - FInput1E = 64'h4344FD2B00000000; - FInput2E = 64'h8CEF012 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2060057\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0E757C3500000000; - ans = 64'h5CB08F B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2061058\n"); - end - FInput1E = 64'h7FFFFDFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h3C8367DE00000000; - ans = 64'hBBDBF3 400000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"2062059\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2063060\n"); - end - FInput1E = 64'h43FDDFCC00000000; - FInput2E = 64'h53652D9 00000000; - FInput3E = 64'hFF30397000000000; - ans = 64'hBD4B2A 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2064061\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"2065062\n"); - end - FInput1E = 64'h3F3FFFFF00000000; - FInput2E = 64'hE3FFFFF 00000000; - FInput3E = 64'h0153304B00000000; - ans = 64'hD0518A 400000000; - flags = 5'h31; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31 "); - $fwrite(fp,"2066063\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2067064\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000180 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2068065\n"); - end - FInput1E = 64'h400FFC0300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"2069066\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE4FFFFF700000000; - ans = 64'hFF8000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2070067\n"); - end - FInput1E = 64'hBF9FFF8000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h81295C2900000000; - ans = 64'h1CFA58 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2071068\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2072069\n"); - end - FInput1E = 64'hABF0040000000000; - FInput2E = 64'h0000010 00000000; - FInput3E = 64'h617E27E900000000; - ans = 64'hF358FE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2073070\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'h0D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0D "); - $fwrite(fp,"2074071\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'h6400000700000000; - ans = 64'hFFFEFF 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2075072\n"); - end - FInput1E = 64'h0020000700000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2076073\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3DFFFDFF00000000; - ans = 64'hFFEFFF 300000000; - flags = 5'hD7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D7 "); - $fwrite(fp,"2077074\n"); - end - FInput1E = 64'hC0D3FFFF00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2078075\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00D3CBC600000000; - ans = 64'h373A60 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2079076\n"); - end - FInput1E = 64'h43FB0B5300000000; - FInput2E = 64'h4FDA81F 00000000; - FInput3E = 64'h80C041D800000000; - ans = 64'h6EE3FC 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2080077\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2081078\n"); - end - FInput1E = 64'hFFF0011F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3C00000000000000; - ans = 64'h00FEFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2082079\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2083080\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h0000403 00000000; - FInput3E = 64'hD500000000000000; - ans = 64'h00007E 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2084081\n"); - end - FInput1E = 64'h3DF3BFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2085082\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4AB166CE00000000; - ans = 64'h1FA205 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2086083\n"); - end - FInput1E = 64'h43FFFFD000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 600000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2087084\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hA6013FFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2088085\n"); - end - FInput1E = 64'hD098800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h573FFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EE "); - $fwrite(fp,"2089086\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2090087\n"); - end - FInput1E = 64'h3FBFFEFF00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'hFFFFC0 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2091088\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h6B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6B "); - $fwrite(fp,"2092089\n"); - end - FInput1E = 64'h41D2B9A600000000; - FInput2E = 64'h9E06F87 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h0801FF 300000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2093090\n"); - end - FInput1E = 64'h3EF03FFF00000000; - FInput2E = 64'hFFFF800 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2094091\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFC000000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2095092\n"); - end - FInput1E = 64'hC390020000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE D00000000; - flags = 5'h66; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"66 "); - $fwrite(fp,"2096093\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h000003FE00000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2097094\n"); - end - FInput1E = 64'hBC6FFFFB00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'h1C10000000000000; - ans = 64'h07FFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2098095\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2099096\n"); - end - FInput1E = 64'hC1E0004000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'hFE3FFFFF00000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2100097\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 900000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2101098\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hC7FFFFF 00000000; - FInput3E = 64'hF5001FC000000000; - ans = 64'h000000 B00000000; - flags = 5'h6B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6B "); - $fwrite(fp,"2102099\n"); - end - FInput1E = 64'hCCF4000000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2103100\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EFFFFFB00000000; - ans = 64'hFF0000 F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2104101\n"); - end - FInput1E = 64'h801C001F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"2105102\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8100000400000000; - ans = 64'h003FFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2106103\n"); - end - FInput1E = 64'h3BFC000000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hDB00000000000000; - ans = 64'h3FDFFF 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2107104\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2108105\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hE0007FE 00000000; - FInput3E = 64'h0100FFFF00000000; - ans = 64'h800000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2109106\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2110107\n"); - end - FInput1E = 64'hED83FFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'h00916C6800000000; - ans = 64'hB77DE2 B00000000; - flags = 5'hD6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D6 "); - $fwrite(fp,"2111108\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'hFE1FFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2112109\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hDAFF800000000000; - ans = 64'h080000 A00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2113110\n"); - end - FInput1E = 64'hBF2FE00000000000; - FInput2E = 64'h0200000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2114111\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hFEF800 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2115112\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hDFF7FE E00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"2116113\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2117114\n"); - end - FInput1E = 64'hC1CFFFFF00000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'hFEC09C0200000000; - ans = 64'h7EAEDD B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2118115\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 200000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2119116\n"); - end - FInput1E = 64'h97AC96A400000000; - FInput2E = 64'h41B5290 00000000; - FInput3E = 64'h01FFFF8100000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2120117\n"); - end - FInput1E = 64'h8DFBDF6F00000000; - FInput2E = 64'hCDC937D 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2121118\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h030FFFFF00000000; - ans = 64'hFFFFF0 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2122119\n"); - end - FInput1E = 64'hC1FB6EFE00000000; - FInput2E = 64'h17A3AE3 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2123120\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E000FFF00000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2124121\n"); - end - FInput1E = 64'h3FFFF7FF00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'h1E00000000000000; - ans = 64'h00011E 300000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"2125122\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2126123\n"); - end - FInput1E = 64'h000C546F00000000; - FInput2E = 64'hA2E851B 00000000; - FInput3E = 64'h028BE97600000000; - ans = 64'h1BF5C0 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2127124\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2128125\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h0E0003FF00000000; - ans = 64'hFFFFF7 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2129126\n"); - end - FInput1E = 64'h47FE4A3100000000; - FInput2E = 64'h65FBDE6 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2130127\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFE00000000000; - ans = 64'h01FFFE C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2131128\n"); - end - FInput1E = 64'hC1DF000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2132129\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h293FFFFF00000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2133130\n"); - end - FInput1E = 64'hC070000000000000; - FInput2E = 64'h081FFFE 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hBFFFFF 600000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"2134131\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2135132\n"); - end - FInput1E = 64'h49D003FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hB7FFFFFF00000000; - ans = 64'hC00000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2136133\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2137134\n"); - end - FInput1E = 64'hC1BFFFFF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h508DA42B00000000; - ans = 64'hAAF7C8 100000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2138135\n"); - end - FInput1E = 64'h3A72C09700000000; - FInput2E = 64'hB960AFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2139136\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h23DFFBFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2140137\n"); - end - FInput1E = 64'hBFC0803F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2141138\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h37FFFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2142139\n"); - end - FInput1E = 64'hC00B14CA00000000; - FInput2E = 64'h18F5886 00000000; - FInput3E = 64'h071F892F00000000; - ans = 64'hD817C5 C00000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"2143140\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2144141\n"); - end - FInput1E = 64'h3FA600BF00000000; - FInput2E = 64'h6D88079 00000000; - FInput3E = 64'h0004000000000000; - ans = 64'h000020 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2145142\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2146143\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h002000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2147144\n"); - end - FInput1E = 64'h4804BCC500000000; - FInput2E = 64'h7327D59 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2148145\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE3000FFF00000000; - ans = 64'hFC0000 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2149146\n"); - end - FInput1E = 64'h4000FFFF00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2150147\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h08003E 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2151148\n"); - end - FInput1E = 64'hBAD0000000000000; - FInput2E = 64'h2001000 00000000; - FInput3E = 64'h02FBFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C4 "); - $fwrite(fp,"2152149\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2153150\n"); - end - FInput1E = 64'h41E0007F00000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'h1400000000000000; - ans = 64'h00FFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2154151\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h09; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"09 "); - $fwrite(fp,"2155152\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h20001FE 00000000; - FInput3E = 64'h0404000000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h71; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"71 "); - $fwrite(fp,"2156153\n"); - end - FInput1E = 64'hB1374D7900000000; - FInput2E = 64'hC20A467 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2157154\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FDBF91100000000; - ans = 64'hFB3214 C00000000; - flags = 5'h4E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4E "); - $fwrite(fp,"2158155\n"); - end - FInput1E = 64'h38E0000000000000; - FInput2E = 64'h00C0000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2159156\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h800003 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2160157\n"); - end - FInput1E = 64'h000001FF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hF7C8B47200000000; - ans = 64'h673284 C00000000; - flags = 5'h74; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"74 "); - $fwrite(fp,"2161158\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2162159\n"); - end - FInput1E = 64'hC7EC5A5200000000; - FInput2E = 64'h506BBF3 00000000; - FInput3E = 64'hFFF7FDFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2163160\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2164161\n"); - end - FInput1E = 64'hC0EFFFFB00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hABFFFFFF00000000; - ans = 64'hFFFFCE 400000000; - flags = 5'hF9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F9 "); - $fwrite(fp,"2165162\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2166163\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C00000200000000; - ans = 64'h0001FE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2167164\n"); - end - FInput1E = 64'hBFFE1FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2168165\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h38FFFFDF00000000; - ans = 64'hFFFFF0 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2169166\n"); - end - FInput1E = 64'hB808F97200000000; - FInput2E = 64'h319197E 00000000; - FInput3E = 64'h1D00000800000000; - ans = 64'h080000 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2170167\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2171168\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h0000FE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2172169\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2173170\n"); - end - FInput1E = 64'hC09F29D000000000; - FInput2E = 64'h5C44B08 00000000; - FInput3E = 64'h02FDFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"2174171\n"); - end - FInput1E = 64'h389A5E0000000000; - FInput2E = 64'hD1BA814 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2175172\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hE6FE000000000000; - ans = 64'h000010 400000000; - flags = 5'h37; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37 "); - $fwrite(fp,"2176173\n"); - end - FInput1E = 64'h4260200000000000; - FInput2E = 64'h3FFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2177174\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h6500000000000000; - ans = 64'h3F7FFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2178175\n"); - end - FInput1E = 64'hC3CFF00000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h0000401F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E9 "); - $fwrite(fp,"2179176\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2180177\n"); - end - FInput1E = 64'hB590400000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'hEFFFFFF700000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2181178\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2182179\n"); - end - FInput1E = 64'hB95DFBD700000000; - FInput2E = 64'hD496520 00000000; - FInput3E = 64'hCA64E89D00000000; - ans = 64'hE848BF 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2183180\n"); - end - FInput1E = 64'h47FFC00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2184181\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01A981A400000000; - ans = 64'h881D50 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2185182\n"); - end - FInput1E = 64'hC1CD358100000000; - FInput2E = 64'h183FF50 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2186183\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hD4FFFFFF00000000; - ans = 64'h81FFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2187184\n"); - end - FInput1E = 64'hC9D0800000000000; - FInput2E = 64'h0200000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFE0FFF 400000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"2188185\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2189186\n"); - end - FInput1E = 64'hE3FFFFFF00000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'h9B00000000000000; - ans = 64'hBFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2190187\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2191188\n"); - end - FInput1E = 64'hB6D0000000000000; - FInput2E = 64'h0201FFF 00000000; - FInput3E = 64'h3D00000000000000; - ans = 64'h1FFE00 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2192189\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h2002000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2193190\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h026CFA0300000000; - ans = 64'h69F6FE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2194191\n"); - end - FInput1E = 64'h4040000000000000; - FInput2E = 64'h0000402 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hBC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BC "); - $fwrite(fp,"2195192\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E00000000000000; - ans = 64'h7FFF7F 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2196193\n"); - end - FInput1E = 64'h3CA5735A00000000; - FInput2E = 64'hFAF0313 00000000; - FInput3E = 64'h1EF7FFFE00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2197194\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2198195\n"); - end - FInput1E = 64'hD0E2571400000000; - FInput2E = 64'hB74FAD1 00000000; - FInput3E = 64'h81FFFFF700000000; - ans = 64'hFFFF7E F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2199196\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"2200197\n"); - end - FInput1E = 64'h4250000000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h035D4D9A00000000; - ans = 64'hA21809 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2201198\n"); - end - FInput1E = 64'h43EFFF8000000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2202199\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7FFFFBFF00000000; - ans = 64'h7FFFFF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2203200\n"); - end - FInput1E = 64'hC3EFFDFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2204201\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00800000000000; - ans = 64'h001FFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2205202\n"); - end - FInput1E = 64'h37F5380500000000; - FInput2E = 64'h152801C 00000000; - FInput3E = 64'h3400000400000000; - ans = 64'h000080 400000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2206203\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2207204\n"); - end - FInput1E = 64'hB9E0000000000000; - FInput2E = 64'h0000023 00000000; - FInput3E = 64'hA0E0000000000000; - ans = 64'h000002 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2208205\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2209206\n"); - end - FInput1E = 64'hC1E03E9100000000; - FInput2E = 64'hBB8B8EE 00000000; - FInput3E = 64'hFF00000400000000; - ans = 64'h3FFFFE 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2210207\n"); - end - FInput1E = 64'hBAE0007F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2211208\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D17E70900000000; - ans = 64'hEE2843 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2212209\n"); - end - FInput1E = 64'hC3C0001000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"2213210\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF200400000000000; - ans = 64'h000FFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2214211\n"); - end - FInput1E = 64'h471C000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFF0000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"2215212\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2216213\n"); - end - FInput1E = 64'h3FBBFFFF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hD60001DF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2217214\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2218215\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hE00FFFF 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFFFFE 100000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2219216\n"); - end - FInput1E = 64'hCCE0400000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2220217\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h018B10BA00000000; - ans = 64'h5DC953 C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"2221218\n"); - end - FInput1E = 64'h43F0100000000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2222219\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h801FFEFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2223220\n"); - end - FInput1E = 64'h3E30000000000000; - FInput2E = 64'h1FFFDFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFF400 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"2224221\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2225222\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFF806 00000000; - FInput3E = 64'h12949D5200000000; - ans = 64'h6CB127 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2226223\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 700000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2227224\n"); - end - FInput1E = 64'h4030000000000000; - FInput2E = 64'h003FEFF 00000000; - FInput3E = 64'h030007FF00000000; - ans = 64'hFFFFDF 300000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"2228225\n"); - end - FInput1E = 64'h3E6F864800000000; - FInput2E = 64'hEC7D93E 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2229226\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h000280 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2230227\n"); - end - FInput1E = 64'hBEFFF00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2231228\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FDFFEF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2232229\n"); - end - FInput1E = 64'hC7E0000F00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'hFEFFFFDD00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2233230\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2234231\n"); - end - FInput1E = 64'h001E2DA900000000; - FInput2E = 64'hC44D7E7 00000000; - FInput3E = 64'h7E4AEDAF00000000; - ans = 64'h4429F4 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2235232\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hCD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CD "); - $fwrite(fp,"2236233\n"); - end - FInput1E = 64'hC03FFFC000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h01FC000000000000; - ans = 64'h00003F 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2237234\n"); - end - FInput1E = 64'hBFDFFF0300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2238235\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h08731F9500000000; - ans = 64'h8C3021 300000000; - flags = 5'h14; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14 "); - $fwrite(fp,"2239236\n"); - end - FInput1E = 64'h3F2FFFFF00000000; - FInput2E = 64'hFFC0FFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'hF1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F1 "); - $fwrite(fp,"2240237\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFBCA1C2500000000; - ans = 64'h39CCCA 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2241238\n"); - end - FInput1E = 64'hC7E0000400000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'hCB08000000000000; - ans = 64'h000000 D00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2242239\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2243240\n"); - end - FInput1E = 64'hFFD100FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE0FFFFF000000000; - ans = 64'h000200 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2244241\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2245242\n"); - end - FInput1E = 64'hBE4DFFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h3E02000000000000; - ans = 64'h00000F B00000000; - flags = 5'hBC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BC "); - $fwrite(fp,"2246243\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'hDFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2247244\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD57726200000000; - ans = 64'hA27745 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2248245\n"); - end - FInput1E = 64'hBFDFBE7F00000000; - FInput2E = 64'hCD53F81 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2249246\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFCFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2250247\n"); - end - FInput1E = 64'hB860020000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'h10FFFFFF00000000; - ans = 64'h0007FF 500000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2251248\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2252249\n"); - end - FInput1E = 64'h43FFFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h800010 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2253250\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2254251\n"); - end - FInput1E = 64'h12A00FFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFAFEFFFF00000000; - ans = 64'h800000 F00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2255252\n"); - end - FInput1E = 64'h3F220DBD00000000; - FInput2E = 64'hC6482BE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2256253\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCF01FFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2257254\n"); - end - FInput1E = 64'h43D0004100000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'h14; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14 "); - $fwrite(fp,"2258255\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFF7FF00000000; - ans = 64'hFF0000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2259256\n"); - end - FInput1E = 64'h41CDBC6100000000; - FInput2E = 64'hC027028 00000000; - FInput3E = 64'h7EFF7FFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2260257\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2261258\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h0002007 00000000; - FInput3E = 64'h00100FFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2262259\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2263260\n"); - end - FInput1E = 64'h40FF000000000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'h028B10DB00000000; - ans = 64'h9591E1 200000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2264261\n"); - end - FInput1E = 64'h7FF0000100000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2265262\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1DA340AB00000000; - ans = 64'h98A556 700000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"2266263\n"); - end - FInput1E = 64'hC14FEFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2267264\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1B05D3FE00000000; - ans = 64'hB216EB 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2268265\n"); - end - FInput1E = 64'h2970000000000000; - FInput2E = 64'h0100008 00000000; - FInput3E = 64'hEEFFFFFE00000000; - ans = 64'h00FFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2269266\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2270267\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hFFE0001 00000000; - FInput3E = 64'h32DC3DA300000000; - ans = 64'hF880F3 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2271268\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"2272269\n"); - end - FInput1E = 64'hC1E001FF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h3CFFF7FF00000000; - ans = 64'hFFFFEF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2273270\n"); - end - FInput1E = 64'hBCA4000000000000; - FInput2E = 64'h00001FE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2274271\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h818EA2A500000000; - ans = 64'h2D59C9 300000000; - flags = 5'h39; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39 "); - $fwrite(fp,"2275272\n"); - end - FInput1E = 64'hC80FFFFE00000000; - FInput2E = 64'h2000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h01; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"01 "); - $fwrite(fp,"2276273\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h617FFFFE00000000; - ans = 64'h000000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2277274\n"); - end - FInput1E = 64'h3F3FFFFF00000000; - FInput2E = 64'hE000006 00000000; - FInput3E = 64'h0A50331200000000; - ans = 64'hDB01E6 000000000; - flags = 5'h06; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"06 "); - $fwrite(fp,"2278275\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2279276\n"); - end - FInput1E = 64'hC3C00FFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB7007FFF00000000; - ans = 64'hFFFFF8 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2280277\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"2281278\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h0C00000000000000; - ans = 64'h000080 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2282279\n"); - end - FInput1E = 64'hC1D0FFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2283280\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF900000000000000; - ans = 64'hBFFFFF C00000000; - flags = 5'hD7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D7 "); - $fwrite(fp,"2284281\n"); - end - FInput1E = 64'hC7E1FFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2285282\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h917BC9E400000000; - ans = 64'h178002 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2286283\n"); - end - FInput1E = 64'hC1EB269400000000; - FInput2E = 64'hC6830E5 00000000; - FInput3E = 64'h61FFE00000000000; - ans = 64'h000000 400000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"2287284\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2288285\n"); - end - FInput1E = 64'hC310040000000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'h8001FFFF00000000; - ans = 64'hFFFDFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2289286\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2290287\n"); - end - FInput1E = 64'hC3FFC00000000000; - FInput2E = 64'h000001E 00000000; - FInput3E = 64'h0CF14C0E00000000; - ans = 64'hC04A28 B00000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"2291288\n"); - end - FInput1E = 64'hC19D57CE00000000; - FInput2E = 64'h459DFE8 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2292289\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h030003FF00000000; - ans = 64'hFFFFFD F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2293290\n"); - end - FInput1E = 64'hC01EFFFF00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2294291\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EF0000000000000; - ans = 64'h7FFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2295292\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h001F7FE 00000000; - FInput3E = 64'hA200000000000000; - ans = 64'h00000E B00000000; - flags = 5'hE8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E8 "); - $fwrite(fp,"2296293\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2297294\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hC42C55C900000000; - ans = 64'h2BC474 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2298295\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2299296\n"); - end - FInput1E = 64'h364FFFFE00000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hC0001F C00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2300297\n"); - end - FInput1E = 64'h4BA6377A00000000; - FInput2E = 64'h28551B5 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2301298\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0107FFFF00000000; - ans = 64'hFBFFFE B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2302299\n"); - end - FInput1E = 64'hC1F0000700000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2303300\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE9B5C2600000000; - ans = 64'h37C823 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2304301\n"); - end - FInput1E = 64'h3FD2100000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE1FBFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"2305302\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2306303\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h10007FF 00000000; - FInput3E = 64'h00FFFFF700000000; - ans = 64'hFFFF7F 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2307304\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2308305\n"); - end - FInput1E = 64'h3C0FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h28CE3A1300000000; - ans = 64'hB8054C 300000000; - flags = 5'hDD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DD "); - $fwrite(fp,"2309306\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h1FFFFEF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2310307\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0094429400000000; - ans = 64'h0F93DA 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2311308\n"); - end - FInput1E = 64'h3F90000000000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2312309\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFC00000000000; - ans = 64'h00007F F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2313310\n"); - end - FInput1E = 64'h3FB001F800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCD3937600000000; - ans = 64'hA582AB 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2314311\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2315312\n"); - end - FInput1E = 64'hBDD0000000000000; - FInput2E = 64'h3FFFC00 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'hC00000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2316313\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"2317314\n"); - end - FInput1E = 64'h3FCFF00000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hFAFFFFFF00000000; - ans = 64'hFF801F C00000000; - flags = 5'hAC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AC "); - $fwrite(fp,"2318315\n"); - end - FInput1E = 64'hBCA65FB400000000; - FInput2E = 64'h73E2946 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2319316\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFFE00000000; - ans = 64'hFFFBFF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2320317\n"); - end - FInput1E = 64'h41D0000000000000; - FInput2E = 64'h17FFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2321318\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h18FFFFDF00000000; - ans = 64'hFFFFF0 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2322319\n"); - end - FInput1E = 64'hC03001FF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h14C2D5D800000000; - ans = 64'hAF9AF2 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2323320\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2324321\n"); - end - FInput1E = 64'hBFCDBFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h83FFFFFC00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2325322\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hC4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C4 "); - $fwrite(fp,"2326323\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000200 00000000; - FInput3E = 64'h0FFFFFFF00000000; - ans = 64'h000040 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2327324\n"); - end - FInput1E = 64'hC3FFFFFE00000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2328325\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3FFFFFF700000000; - ans = 64'hFFDFFE 600000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2329326\n"); - end - FInput1E = 64'h000FFFFE00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2330327\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2331328\n"); - end - FInput1E = 64'h3F80008000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h06FA361800000000; - ans = 64'h0F01C6 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2332329\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2333330\n"); - end - FInput1E = 64'hC42FFFFE00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h6800000100000000; - ans = 64'hFBFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2334331\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"2335332\n"); - end - FInput1E = 64'h380E1E7900000000; - FInput2E = 64'h2012E39 00000000; - FInput3E = 64'h3DFDFFFD00000000; - ans = 64'hFFFFFF 500000000; - flags = 5'h24; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24 "); - $fwrite(fp,"2336333\n"); - end - FInput1E = 64'hBF0261C400000000; - FInput2E = 64'hFFA2644 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2337334\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFBA B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2338335\n"); - end - FInput1E = 64'hB813FFFB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hCB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CB "); - $fwrite(fp,"2339336\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFE00700000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2340337\n"); - end - FInput1E = 64'h47F0020000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h800000 400000000; - flags = 5'hD2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D2 "); - $fwrite(fp,"2341338\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2342339\n"); - end - FInput1E = 64'hC800000000000000; - FInput2E = 64'h0200100 00000000; - FInput3E = 64'hFE83E5C000000000; - ans = 64'h388FA8 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2343340\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 100000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2344341\n"); - end - FInput1E = 64'hB810001000000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'hFCFFBE0800000000; - ans = 64'h8464EE B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2345342\n"); - end - FInput1E = 64'hB7E4C9BC00000000; - FInput2E = 64'h4E8952C 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2346343\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF2E79D600000000; - ans = 64'hC4359F C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2347344\n"); - end - FInput1E = 64'h41B0000000000000; - FInput2E = 64'h01FFFE0 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2348345\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDEFFFFF00000000; - ans = 64'hFFFFBF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2349346\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h801FFFE 00000000; - FInput3E = 64'h345E454B00000000; - ans = 64'h811D40 A00000000; - flags = 5'h64; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64 "); - $fwrite(fp,"2350347\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2351348\n"); - end - FInput1E = 64'h3FB8BD9300000000; - FInput2E = 64'h08EBDE8 00000000; - FInput3E = 64'h9700000000000000; - ans = 64'h7FFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2352349\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hD9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D9 "); - $fwrite(fp,"2353350\n"); - end - FInput1E = 64'hC3CC000F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7100000000000000; - ans = 64'h0FFFBF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2354351\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2355352\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCCFFFFFF00000000; - ans = 64'hC00010 400000000; - flags = 5'h63; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"63 "); - $fwrite(fp,"2356353\n"); - end - FInput1E = 64'h315FFFFF00000000; - FInput2E = 64'h8080000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2357354\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFEFFF00000000; - ans = 64'hFFE000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2358355\n"); - end - FInput1E = 64'h3FBF004900000000; - FInput2E = 64'h63669F2 00000000; - FInput3E = 64'h0268B06200000000; - ans = 64'h1A3331 300000000; - flags = 5'h82; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"82 "); - $fwrite(fp,"2359356\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2360357\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'hFDFF800000000000; - ans = 64'h00FFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2361358\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2362359\n"); - end - FInput1E = 64'h47FFFFFF00000000; - FInput2E = 64'hFFFDBFF 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'h80000F 400000000; - flags = 5'hC3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C3 "); - $fwrite(fp,"2363360\n"); - end - FInput1E = 64'hC3CFE00700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2364361\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFC08008000000000; - ans = 64'h000000 B00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2365362\n"); - end - FInput1E = 64'h3E7EFFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'hE9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E9 "); - $fwrite(fp,"2366363\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hAF8D650900000000; - ans = 64'hA53EEB 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2367364\n"); - end - FInput1E = 64'h001DFEFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h3FE000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2368365\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2369366\n"); - end - FInput1E = 64'hB77FBFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FFFFDBF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2370367\n"); - end - FInput1E = 64'h4340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2371368\n"); - end - FInput1E = 64'h39EFFF8800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8400020F00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2372369\n"); - end - FInput1E = 64'h7FF6AD1200000000; - FInput2E = 64'hCAD8706 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2373370\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h000400 B00000000; - flags = 5'hB1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B1 "); - $fwrite(fp,"2374371\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h00007DE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2375372\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAC90CC800000000; - ans = 64'h968996 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2376373\n"); - end - FInput1E = 64'h3FE01FDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1FEFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hDA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DA "); - $fwrite(fp,"2377374\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2378375\n"); - end - FInput1E = 64'h3FD86FA500000000; - FInput2E = 64'hF3E7889 00000000; - FInput3E = 64'h3FE7CBD300000000; - ans = 64'h643346 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2379376\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"2380377\n"); - end - FInput1E = 64'h3E90000000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'h1FF8000000000000; - ans = 64'h00FFFF 300000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2381378\n"); - end - FInput1E = 64'h800BD97400000000; - FInput2E = 64'h3D1F8E7 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2382379\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EB3206C00000000; - ans = 64'h8FF653 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2383380\n"); - end - FInput1E = 64'hC00FFDFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2384381\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'h003FFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2385382\n"); - end - FInput1E = 64'h3927B3F600000000; - FInput2E = 64'hC3FD021 00000000; - FInput3E = 64'h1EFFFFE000000000; - ans = 64'h000000 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2386383\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2387384\n"); - end - FInput1E = 64'h000FFC0000000000; - FInput2E = 64'h2000000 00000000; - FInput3E = 64'h3D00000200000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2388385\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2389386\n"); - end - FInput1E = 64'h3E1FFFFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'hFDF8000000000000; - ans = 64'h7FFFFE C00000000; - flags = 5'h0A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0A "); - $fwrite(fp,"2390387\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hFFFC00E 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2391388\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA9BFFFFF00000000; - ans = 64'hFFF7FF 400000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"2392389\n"); - end - FInput1E = 64'h403170F000000000; - FInput2E = 64'hEC62E81 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2393390\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8F0FFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2394391\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0FFFBFF 00000000; - FInput3E = 64'h037FFFFF00000000; - ans = 64'hF80000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2395392\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2396393\n"); - end - FInput1E = 64'hC00FFF0000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFC00401F00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2397394\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2398395\n"); - end - FInput1E = 64'h43CFFE0000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'hFCFFFFC000000000; - ans = 64'h00001F 400000000; - flags = 5'hA7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A7 "); - $fwrite(fp,"2399396\n"); - end - FInput1E = 64'h3F69D69F00000000; - FInput2E = 64'h8BBDB20 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2400397\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'h00FFFE B00000000; - flags = 5'hCA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CA "); - $fwrite(fp,"2401398\n"); - end - FInput1E = 64'hC0F0000000000000; - FInput2E = 64'h0203FFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h21; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21 "); - $fwrite(fp,"2402399\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000100000000; - ans = 64'h7FFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2403400\n"); - end - FInput1E = 64'hC3E07FFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hFD0007FF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2404401\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2405402\n"); - end - FInput1E = 64'h7FEDFFFF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h7F04000000000000; - ans = 64'h000008 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2406403\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"2407404\n"); - end - FInput1E = 64'hC03F72D700000000; - FInput2E = 64'h4047A88 00000000; - FInput3E = 64'h08B52A0F00000000; - ans = 64'hD1872E 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2408405\n"); - end - FInput1E = 64'h405201FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2409406\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3D00001000000000; - ans = 64'h000000 B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2410407\n"); - end - FInput1E = 64'h47E001FF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 A00000000; - flags = 5'h75; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"75 "); - $fwrite(fp,"2411408\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h40914B9F00000000; - ans = 64'h0C1CCD F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2412409\n"); - end - FInput1E = 64'hCBECA4E400000000; - FInput2E = 64'hF825A01 00000000; - FInput3E = 64'h1E8658A700000000; - ans = 64'h9B2CF7 F00000000; - flags = 5'h97; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97 "); - $fwrite(fp,"2413410\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2414411\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h1FFFFFD 00000000; - FInput3E = 64'h0100003F00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2415412\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"2416413\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFC00FE 00000000; - FInput3E = 64'hF9FFFFFF00000000; - ans = 64'h00003F 300000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2417414\n"); - end - FInput1E = 64'hB6931FEF00000000; - FInput2E = 64'h8BD391F 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2418415\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2419416\n"); - end - FInput1E = 64'hC2A0001000000000; - FInput2E = 64'h8000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"2420417\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F00000800000000; - ans = 64'h7FFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2421418\n"); - end - FInput1E = 64'hB8020AE700000000; - FInput2E = 64'h5604F99 00000000; - FInput3E = 64'h0100008000000000; - ans = 64'h3FFFFE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2422419\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2423420\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h56FFFFFF00000000; - ans = 64'hFFBFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2424421\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2425422\n"); - end - FInput1E = 64'hBF8FEFFF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'h7EFFFFFF00000000; - ans = 64'hFFFEFE C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2426423\n"); - end - FInput1E = 64'hC0705FE300000000; - FInput2E = 64'h0986F95 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2427424\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4100007F00000000; - ans = 64'hEFFFFF B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2428425\n"); - end - FInput1E = 64'hC036A40400000000; - FInput2E = 64'h24F181C 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2429426\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0FD7B96E00000000; - ans = 64'hF663E6 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2430427\n"); - end - FInput1E = 64'hBB94AE9500000000; - FInput2E = 64'hFBE4237 00000000; - FInput3E = 64'h3D00000000000000; - ans = 64'h00801F C00000000; - flags = 5'h48; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48 "); - $fwrite(fp,"2431428\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2432429\n"); - end - FInput1E = 64'h401FC00000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hFC574B7800000000; - ans = 64'h44FE9F 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2433430\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2434431\n"); - end - FInput1E = 64'h41D1000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD02000100000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"2435432\n"); - end - FInput1E = 64'h41DFFFFF00000000; - FInput2E = 64'hFE00003 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2436433\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF48994C00000000; - ans = 64'h5367F7 B00000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"2437434\n"); - end - FInput1E = 64'hC3D667B100000000; - FInput2E = 64'h9B7AA5C 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2438435\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8001000000000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2439436\n"); - end - FInput1E = 64'hB7F8002000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0233747700000000; - ans = 64'h01F342 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2440437\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2441438\n"); - end - FInput1E = 64'h3807C86000000000; - FInput2E = 64'hD30F045 00000000; - FInput3E = 64'hB3F0000000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2442439\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2443440\n"); - end - FInput1E = 64'hC7F0800000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'h07FFFF 400000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2444441\n"); - end - FInput1E = 64'hC920000000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2445442\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00000800000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2446443\n"); - end - FInput1E = 64'hB81FE04000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h9A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9A "); - $fwrite(fp,"2447444\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'hFFFF7F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2448445\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFF83FF 00000000; - FInput3E = 64'hFFFFFFFE00000000; - ans = 64'h7FFFFE 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2449446\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2450447\n"); - end - FInput1E = 64'hC1F0000000000000; - FInput2E = 64'h0037FFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hF7FFC0 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2451448\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"2452449\n"); - end - FInput1E = 64'hB7E0000000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFFFFFBFF00000000; - ans = 64'hFFFFF6 400000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"2453450\n"); - end - FInput1E = 64'h480EFB1800000000; - FInput2E = 64'h297B81E 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2454451\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h06FFFEFE00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"2455452\n"); - end - FInput1E = 64'hBFCEF3F500000000; - FInput2E = 64'h691EB77 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2456453\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000700000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2457454\n"); - end - FInput1E = 64'h1C5F0FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h001FFA 600000000; - flags = 5'h28; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"28 "); - $fwrite(fp,"2458455\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2459456\n"); - end - FInput1E = 64'hC34B70BD00000000; - FInput2E = 64'h7B4C311 00000000; - FInput3E = 64'h1D8AD49600000000; - ans = 64'h831E23 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2460457\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h2C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2C "); - $fwrite(fp,"2461458\n"); - end - FInput1E = 64'h4709591E00000000; - FInput2E = 64'h44BE6C6 00000000; - FInput3E = 64'h4FE0000000000000; - ans = 64'h00001F 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2462459\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2463460\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCEFFFFFF00000000; - ans = 64'hBFFFF8 400000000; - flags = 5'hF8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F8 "); - $fwrite(fp,"2464461\n"); - end - FInput1E = 64'hFFEBFFFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2465462\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0D79745900000000; - ans = 64'h1E982A 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2466463\n"); - end - FInput1E = 64'hC698001F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1DFFFFF700000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2467464\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2468465\n"); - end - FInput1E = 64'hC3D2733A00000000; - FInput2E = 64'hB2D9BCA 00000000; - FInput3E = 64'h02FF800000000000; - ans = 64'h003FFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2469466\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2470467\n"); - end - FInput1E = 64'hFFE0000200000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'hFDFDFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2471468\n"); - end - FInput1E = 64'h358FFD7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2472469\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D38BF4200000000; - ans = 64'hD14CF0 400000000; - flags = 5'h19; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19 "); - $fwrite(fp,"2473470\n"); - end - FInput1E = 64'h002FFFFE00000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"2474471\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hD500000000000000; - ans = 64'hFFFFEE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2475472\n"); - end - FInput1E = 64'h41DFFC0000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hFD55AD2300000000; - ans = 64'h051900 B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2476473\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2477474\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h14FBFFFF00000000; - ans = 64'hFFFFFC 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2478475\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2479476\n"); - end - FInput1E = 64'h403FFFFF00000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'hFE00000400000000; - ans = 64'h004000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2480477\n"); - end - FInput1E = 64'hBFE041FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2481478\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF07FFFF00000000; - ans = 64'hFFFFF7 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2482479\n"); - end - FInput1E = 64'h400000FF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2483480\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFF600000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2484481\n"); - end - FInput1E = 64'h3FCDFFFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h46FFFFFF00000000; - ans = 64'h010000 C00000000; - flags = 5'h62; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"62 "); - $fwrite(fp,"2485482\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2486483\n"); - end - FInput1E = 64'hBFBFFF7F00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'h0200000800000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2487484\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2488485\n"); - end - FInput1E = 64'hC07A49F600000000; - FInput2E = 64'hC8E33A7 00000000; - FInput3E = 64'h09FBFFFF00000000; - ans = 64'hFFFFE0 700000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"2489486\n"); - end - FInput1E = 64'h401FFFFB00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2490487\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8000001F00000000; - ans = 64'hFDFFFF B00000000; - flags = 5'hD3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D3 "); - $fwrite(fp,"2491488\n"); - end - FInput1E = 64'h4020000000000000; - FInput2E = 64'h0030000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"2492489\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hB9FFFFFF00000000; - ans = 64'hFFE3FF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2493490\n"); - end - FInput1E = 64'h3FCFFFFE00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'hD100000000000000; - ans = 64'h07FFBE 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2494491\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2495492\n"); - end - FInput1E = 64'h401C0FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7CAC08F300000000; - ans = 64'h72F1E8 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2496493\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2497494\n"); - end - FInput1E = 64'h3FAFFFFF00000000; - FInput2E = 64'hFFFC03F 00000000; - FInput3E = 64'hFBFFDFFF00000000; - ans = 64'hFFFEFE 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2498495\n"); - end - FInput1E = 64'h3FDFF00100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2499496\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7FFFF7FF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"2500497\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2501498\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD04000000000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2502499\n"); - end - FInput1E = 64'hC91B7FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1CFFFFBF00000000; - ans = 64'hFFFBFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2503500\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2504501\n"); - end - FInput1E = 64'hBFE2818900000000; - FInput2E = 64'h59195B8 00000000; - FInput3E = 64'hFF80000000000000; - ans = 64'h1FFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2505502\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2506503\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h15003FFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2507504\n"); - end - FInput1E = 64'hC1BFDFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2508505\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFF07FF F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2509506\n"); - end - FInput1E = 64'h43C7F7FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2510507\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h22E5404400000000; - ans = 64'h1AE6E1 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2511508\n"); - end - FInput1E = 64'hC110000100000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'h02FE000700000000; - ans = 64'hFFFFFF 200000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2512509\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2513510\n"); - end - FInput1E = 64'h41DF803F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3BFFDFBF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2514511\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"2515512\n"); - end - FInput1E = 64'hC052639B00000000; - FInput2E = 64'hA0F2877 00000000; - FInput3E = 64'hB10003FC00000000; - ans = 64'h000000 400000000; - flags = 5'h4E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4E "); - $fwrite(fp,"2516513\n"); - end - FInput1E = 64'h403FFFF700000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2517514\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF0E0000000000000; - ans = 64'h03FFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2518515\n"); - end - FInput1E = 64'h0350000000000000; - FInput2E = 64'h0000FBF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2519516\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hAC00001000000000; - ans = 64'h00000E 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2520517\n"); - end - FInput1E = 64'h3FEFFE0000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hE07FFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2521518\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2522519\n"); - end - FInput1E = 64'h41C6122B00000000; - FInput2E = 64'h71A4280 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0FFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2523520\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hCB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CB "); - $fwrite(fp,"2524521\n"); - end - FInput1E = 64'h25AFFFFF00000000; - FInput2E = 64'hFFDFBFE 00000000; - FInput3E = 64'hEEE0008000000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2525522\n"); - end - FInput1E = 64'h42C0000000000000; - FInput2E = 64'h0001FFD 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2526523\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h0100FF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2527524\n"); - end - FInput1E = 64'h9FAFFFFF00000000; - FInput2E = 64'hFFFFFBC 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2528525\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hBFF7FF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2529526\n"); - end - FInput1E = 64'hBFFCAE3F00000000; - FInput2E = 64'h86A3E05 00000000; - FInput3E = 64'hFFD5BBF400000000; - ans = 64'h86D7EA 300000000; - flags = 5'hB5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B5 "); - $fwrite(fp,"2530527\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2531528\n"); - end - FInput1E = 64'hB7EF7FFF00000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'h63FEBFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2532529\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2533530\n"); - end - FInput1E = 64'h3E2FFAFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1B25130400000000; - ans = 64'h1872A8 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2534531\n"); - end - FInput1E = 64'h000D7FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2535532\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8072097100000000; - ans = 64'hB2E835 300000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"2536533\n"); - end - FInput1E = 64'h3F42712300000000; - FInput2E = 64'h6A12B2C 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2537534\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C00000000000000; - ans = 64'hFFFFBF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2538535\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h02FFFFF 00000000; - FInput3E = 64'h9A3480B000000000; - ans = 64'h494CEA 400000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"2539536\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2540537\n"); - end - FInput1E = 64'hC80FFFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'h0007FF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2541538\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2542539\n"); - end - FInput1E = 64'hC050000000000000; - FInput2E = 64'h40000FF 00000000; - FInput3E = 64'hD2CD701000000000; - ans = 64'hADDFD9 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2543540\n"); - end - FInput1E = 64'h3C0FD15800000000; - FInput2E = 64'h3BE65D4 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2544541\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1DD090FE00000000; - ans = 64'h23ACF5 C00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2545542\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFF8FF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2546543\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h00080F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2547544\n"); - end - FInput1E = 64'hD059D27A00000000; - FInput2E = 64'h1E40CF0 00000000; - FInput3E = 64'h8A0000FF00000000; - ans = 64'hFFFDFE 400000000; - flags = 5'hAB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AB "); - $fwrite(fp,"2548545\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2549546\n"); - end - FInput1E = 64'hC015F63C00000000; - FInput2E = 64'h1A65B14 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h00083F 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2550547\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2551548\n"); - end - FInput1E = 64'hBFB0000300000000; - FInput2E = 64'hFFFF000 00000000; - FInput3E = 64'h1200000000000000; - ans = 64'h002003 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2552549\n"); - end - FInput1E = 64'h401BFFFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2553550\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hD7FFFF 000000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"2554551\n"); - end - FInput1E = 64'h409FFFDF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"2555552\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00008000000000; - ans = 64'h0001FE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2556553\n"); - end - FInput1E = 64'hACB70DD600000000; - FInput2E = 64'hF88BB72 00000000; - FInput3E = 64'hFBFFFFBF00000000; - ans = 64'hFFDFFF B00000000; - flags = 5'h0D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0D "); - $fwrite(fp,"2557554\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2558555\n"); - end - FInput1E = 64'h40F6050100000000; - FInput2E = 64'hEA97130 00000000; - FInput3E = 64'hFA8001FF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2559556\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2560557\n"); - end - FInput1E = 64'hC050010000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hF18C916C00000000; - ans = 64'hC1517A B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2561558\n"); - end - FInput1E = 64'hC05A51DA00000000; - FInput2E = 64'h3F55483 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2562559\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD03FFC000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2563560\n"); - end - FInput1E = 64'h001FFF0F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2564561\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D26493300000000; - ans = 64'h9E988C 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2565562\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hBFFFDFF 00000000; - FInput3E = 64'h3F49E68C00000000; - ans = 64'h34CC8B 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2566563\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2567564\n"); - end - FInput1E = 64'h37E9A4F000000000; - FInput2E = 64'h7FA9709 00000000; - FInput3E = 64'hFDFFFFF800000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2568565\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h34; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34 "); - $fwrite(fp,"2569566\n"); - end - FInput1E = 64'h381FFFFF00000000; - FInput2E = 64'h7FFFEFF 00000000; - FInput3E = 64'h6F09D76E00000000; - ans = 64'hCA5746 C00000000; - flags = 5'hEE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EE "); - $fwrite(fp,"2570567\n"); - end - FInput1E = 64'h802FBFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2571568\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3DF1FFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EC "); - $fwrite(fp,"2572569\n"); - end - FInput1E = 64'hC1EFFFF800000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2573570\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFDCCB600000000; - ans = 64'hFFD88F 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2574571\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'hF100200000000000; - ans = 64'h003FFE B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2575572\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2576573\n"); - end - FInput1E = 64'hBFCE89A600000000; - FInput2E = 64'h51D8159 00000000; - FInput3E = 64'h0A00000000000000; - ans = 64'hFFFFFD 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2577574\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h1E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1E "); - $fwrite(fp,"2578575\n"); - end - FInput1E = 64'h390054A900000000; - FInput2E = 64'hD8416F9 00000000; - FInput3E = 64'h0D984C8600000000; - ans = 64'h6E6F17 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2579576\n"); - end - FInput1E = 64'h38117A6B00000000; - FInput2E = 64'h5B1F94A 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2580577\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF9844A500000000; - ans = 64'hC5A52A B00000000; - flags = 5'hF3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F3 "); - $fwrite(fp,"2581578\n"); - end - FInput1E = 64'h3FBDFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hBE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BE "); - $fwrite(fp,"2582579\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01A0311000000000; - ans = 64'h1E37C1 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2583580\n"); - end - FInput1E = 64'h463FFFFF00000000; - FInput2E = 64'hFFF3FFF 00000000; - FInput3E = 64'hD200801F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2584581\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2585582\n"); - end - FInput1E = 64'hC000010000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h0B00000000000000; - ans = 64'h000100 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2586583\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2587584\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0200002 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h000007 500000000; - flags = 5'hC7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C7 "); - $fwrite(fp,"2588585\n"); - end - FInput1E = 64'h3FD5E83C00000000; - FInput2E = 64'hC07A5C0 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2589586\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3D0BFFFF00000000; - ans = 64'hFFFFFF A00000000; - flags = 5'h81; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81 "); - $fwrite(fp,"2590587\n"); - end - FInput1E = 64'hBE7003F000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 500000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2591588\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1C01FEFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2592589\n"); - end - FInput1E = 64'h3FFEFFFD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h018E3B3600000000; - ans = 64'hDE8E52 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2593590\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2594591\n"); - end - FInput1E = 64'hB8003FFF00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h28947BC700000000; - ans = 64'h3836AF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2595592\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2596593\n"); - end - FInput1E = 64'h3FCFFA9F00000000; - FInput2E = 64'h0311F0F 00000000; - FInput3E = 64'hFDA6AFB700000000; - ans = 64'h7F4C09 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2597594\n"); - end - FInput1E = 64'hBDD0000600000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2598595\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7FFFFFF800000000; - ans = 64'h000000 400000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2599596\n"); - end - FInput1E = 64'h41C0000000000000; - FInput2E = 64'h0009FFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"2600597\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0204001F00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2601598\n"); - end - FInput1E = 64'h3F8FFFFF00000000; - FInput2E = 64'hFFFBFFE 00000000; - FInput3E = 64'hD7FF000000000000; - ans = 64'h000400 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2602599\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2603600\n"); - end - FInput1E = 64'h3FF72DDE00000000; - FInput2E = 64'h9AA01F4 00000000; - FInput3E = 64'h7800000000000000; - ans = 64'h0FF000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2604601\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h68; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"68 "); - $fwrite(fp,"2605602\n"); - end - FInput1E = 64'hC1E0004000000000; - FInput2E = 64'h4000000 00000000; - FInput3E = 64'h1F80000100000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2606603\n"); - end - FInput1E = 64'h39DFFFFF00000000; - FInput2E = 64'h2000000 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2607604\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7E00080000000000; - ans = 64'h001FFF B00000000; - flags = 5'hB4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B4 "); - $fwrite(fp,"2608605\n"); - end - FInput1E = 64'hBEB91D7000000000; - FInput2E = 64'h9E95146 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2609606\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8D80000000000000; - ans = 64'h020000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2610607\n"); - end - FInput1E = 64'hBFE0400000000000; - FInput2E = 64'h000001E 00000000; - FInput3E = 64'h7F00001000000000; - ans = 64'h010000 300000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2611608\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2612609\n"); - end - FInput1E = 64'hBF503FFF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h02FF800000000000; - ans = 64'h7FFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2613610\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hC9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C9 "); - $fwrite(fp,"2614611\n"); - end - FInput1E = 64'hC690008000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h3E003FFF00000000; - ans = 64'hFFFFC0 A00000000; - flags = 5'h39; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39 "); - $fwrite(fp,"2615612\n"); - end - FInput1E = 64'h400FC00000000000; - FInput2E = 64'h0007FFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2616613\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h003FFD B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2617614\n"); - end - FInput1E = 64'h43D0000100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hB8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B8 "); - $fwrite(fp,"2618615\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h860000FF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2619616\n"); - end - FInput1E = 64'h3FA2EF5400000000; - FInput2E = 64'h3C028E3 00000000; - FInput3E = 64'hCD00000000000000; - ans = 64'h03FFF0 F00000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"2620617\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2621618\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'h3E6D707400000000; - ans = 64'h258B90 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2622619\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 D00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2623620\n"); - end - FInput1E = 64'hC1FE822C00000000; - FInput2E = 64'h34DE664 00000000; - FInput3E = 64'h0251F3CC00000000; - ans = 64'h90E98E C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2624621\n"); - end - FInput1E = 64'hC000000300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2625622\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1E29F75100000000; - ans = 64'h0DB106 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2626623\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFF8100 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2627624\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h23FFF7BF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2628625\n"); - end - FInput1E = 64'h40AFBFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD7FC000000000000; - ans = 64'h000001 B00000000; - flags = 5'h39; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"39 "); - $fwrite(fp,"2629626\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2630627\n"); - end - FInput1E = 64'h3FBF800F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100407F00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2631628\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'h93; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"93 "); - $fwrite(fp,"2632629\n"); - end - FInput1E = 64'h3CA0000100000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h0CF00FFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"2633630\n"); - end - FInput1E = 64'h41F0008000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2634631\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF3FFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"2635632\n"); - end - FInput1E = 64'h5E7EFFFF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2636633\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7EFFBFFF00000000; - ans = 64'hFFFF7F 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2637634\n"); - end - FInput1E = 64'h0FCFF80000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFC8F89B00000000; - ans = 64'hB94125 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2638635\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2639636\n"); - end - FInput1E = 64'hC05FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02000FFF00000000; - ans = 64'hFBFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2640637\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'hE9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E9 "); - $fwrite(fp,"2641638\n"); - end - FInput1E = 64'hB7EFFFEF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFDE0000000000000; - ans = 64'h000007 400000000; - flags = 5'hB8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B8 "); - $fwrite(fp,"2642639\n"); - end - FInput1E = 64'hA961FFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2643640\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1FFFFC0000000000; - ans = 64'h7FFFFF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2644641\n"); - end - FInput1E = 64'hC1C0000000000000; - FInput2E = 64'h02000FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"2645642\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF8C1D01500000000; - ans = 64'hB38468 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2646643\n"); - end - FInput1E = 64'h4BB0000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFF33352E00000000; - ans = 64'hB2235A 300000000; - flags = 5'h86; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"86 "); - $fwrite(fp,"2647644\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2648645\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFDFFDF 00000000; - FInput3E = 64'hCA08000000000000; - ans = 64'h00000E 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2649646\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE E00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2650647\n"); - end - FInput1E = 64'hBFCC5FA800000000; - FInput2E = 64'hDBDBA6A 00000000; - FInput3E = 64'hE0C0010000000000; - ans = 64'h000000 B00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2651648\n"); - end - FInput1E = 64'hCCBFFFFF00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2652649\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFF00000000000; - ans = 64'h03FFFF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2653650\n"); - end - FInput1E = 64'h400D183800000000; - FInput2E = 64'hC0BFD79 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2654651\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0064E61800000000; - ans = 64'h7015FA B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2655652\n"); - end - FInput1E = 64'h30B0800000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EE4147600000000; - ans = 64'h2D4D44 F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2656653\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2657654\n"); - end - FInput1E = 64'h400E220700000000; - FInput2E = 64'h41ABAF4 00000000; - FInput3E = 64'hCA00000700000000; - ans = 64'hFFFF80 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2658655\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h31; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"31 "); - $fwrite(fp,"2659656\n"); - end - FInput1E = 64'hC00000FF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFF81FF 000000000; - flags = 5'h19; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19 "); - $fwrite(fp,"2660657\n"); - end - FInput1E = 64'h403FFFFF00000000; - FInput2E = 64'hE00FFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2661658\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FFFC00000000000; - ans = 64'h080000 400000000; - flags = 5'hAC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AC "); - $fwrite(fp,"2662659\n"); - end - FInput1E = 64'h40923A7600000000; - FInput2E = 64'hF2C6385 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"2663660\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'h7FFDFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2664661\n"); - end - FInput1E = 64'h000968BF00000000; - FInput2E = 64'hFD31B9B 00000000; - FInput3E = 64'h0001FFBF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2665662\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2666663\n"); - end - FInput1E = 64'h303FFFFF00000000; - FInput2E = 64'hBF7FFFF 00000000; - FInput3E = 64'h1270C52F00000000; - ans = 64'hB2AE7D C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2667664\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2668665\n"); - end - FInput1E = 64'hC01B2B5500000000; - FInput2E = 64'h38E3B77 00000000; - FInput3E = 64'h3D03FFFF00000000; - ans = 64'hFFFBFF C00000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"2669666\n"); - end - FInput1E = 64'h3FD0088000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2670667\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFE0000000000; - ans = 64'h00003E 300000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"2671668\n"); - end - FInput1E = 64'h3FDFFBFF00000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2672669\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hED00023F00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2673670\n"); - end - FInput1E = 64'hDC50000000000000; - FInput2E = 64'h7000000 00000000; - FInput3E = 64'hFFFFFFE000000000; - ans = 64'h000FFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2674671\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2675672\n"); - end - FInput1E = 64'hC98C0FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1700FFFF00000000; - ans = 64'hC00000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2676673\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2677674\n"); - end - FInput1E = 64'hB3FFFFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFC0 A00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2678675\n"); - end - FInput1E = 64'h3FD5786500000000; - FInput2E = 64'hBB98490 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2679676\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hBAFFFFFF00000000; - ans = 64'hFFB7FF 300000000; - flags = 5'h69; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"69 "); - $fwrite(fp,"2680677\n"); - end - FInput1E = 64'h43D0000200000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2681678\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E00800F00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2682679\n"); - end - FInput1E = 64'h3EC0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EA18EA800000000; - ans = 64'h087290 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"2683680\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2684681\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'hBDFFFFE 00000000; - FInput3E = 64'h48197C8300000000; - ans = 64'hC4D4B0 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2685682\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"2686683\n"); - end - FInput1E = 64'h3850040000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'hFDFFFF7F00000000; - ans = 64'hFFFEFF 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2687684\n"); - end - FInput1E = 64'h380FFF0000000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2688685\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFC0D52D00000000; - ans = 64'h54F05B C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2689686\n"); - end - FInput1E = 64'h4120000000000000; - FInput2E = 64'h8040000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"2690687\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F50270300000000; - ans = 64'h3FDBCA 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2691688\n"); - end - FInput1E = 64'h3FCF800300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hC948D77700000000; - ans = 64'h57E9E2 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2692689\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2693690\n"); - end - FInput1E = 64'h3FB0001F00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'h885176B300000000; - ans = 64'hE03F6C F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2694691\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2695692\n"); - end - FInput1E = 64'hC3E0008000000000; - FInput2E = 64'h0200000 00000000; - FInput3E = 64'hDDFFFFFE00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2696693\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2697694\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB804000000000000; - ans = 64'h000000 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2698695\n"); - end - FInput1E = 64'hBA4C7F8700000000; - FInput2E = 64'h71A499E 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2699696\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h06F0000000000000; - ans = 64'h000006 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2700697\n"); - end - FInput1E = 64'h4020000000000000; - FInput2E = 64'h00003C0 00000000; - FInput3E = 64'h020006FF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2701698\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2702699\n"); - end - FInput1E = 64'h401F80FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFC00000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2703700\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"2704701\n"); - end - FInput1E = 64'hC1F2320900000000; - FInput2E = 64'hD9FFBD8 00000000; - FInput3E = 64'hFD1F427E00000000; - ans = 64'h7CF5E2 B00000000; - flags = 5'hAE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AE "); - $fwrite(fp,"2705702\n"); - end - FInput1E = 64'hCFBFFF8000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2706703\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h6F0007FB00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2707704\n"); - end - FInput1E = 64'h4290000000000000; - FInput2E = 64'h4008000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2708705\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h167C6CA400000000; - ans = 64'h2625FE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2709706\n"); - end - FInput1E = 64'h400A3ADE00000000; - FInput2E = 64'hAADDC67 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFF7FFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2710707\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2711708\n"); - end - FInput1E = 64'hBABCA11200000000; - FInput2E = 64'h976E57A 00000000; - FInput3E = 64'h018121A200000000; - ans = 64'hF65F02 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2712709\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hA3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A3 "); - $fwrite(fp,"2713710\n"); - end - FInput1E = 64'h4030020000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'h76F7FFFF00000000; - ans = 64'hFFC000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2714711\n"); - end - FInput1E = 64'h801FF80000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2715712\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E03FFFF00000000; - ans = 64'hFEFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2716713\n"); - end - FInput1E = 64'hC040000000000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h2E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2E "); - $fwrite(fp,"2717714\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03FFFFF300000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2718715\n"); - end - FInput1E = 64'hC0300FFF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'h3004000000000000; - ans = 64'h3FFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2719716\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2720717\n"); - end - FInput1E = 64'h4050000400000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h010001FF00000000; - ans = 64'hFFFEFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2721718\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2722719\n"); - end - FInput1E = 64'h47DFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFFF7F00000000; - ans = 64'hFF0000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2723720\n"); - end - FInput1E = 64'hC01A02F400000000; - FInput2E = 64'hB53F630 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2724721\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01580F1A00000000; - ans = 64'hE9C31D 300000000; - flags = 5'h25; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25 "); - $fwrite(fp,"2725722\n"); - end - FInput1E = 64'hF2ADC0FB00000000; - FInput2E = 64'h203983A 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 200000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2726723\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD80000100000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2727724\n"); - end - FInput1E = 64'hF790000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000207 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2728725\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2729726\n"); - end - FInput1E = 64'hD1F001FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'h80001F 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2730727\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"2731728\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'hFC00000 00000000; - FInput3E = 64'hDF215D4B00000000; - ans = 64'h48D743 C00000000; - flags = 5'h37; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37 "); - $fwrite(fp,"2732729\n"); - end - FInput1E = 64'h000850AE00000000; - FInput2E = 64'h26527A5 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2733730\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FE7FFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2734731\n"); - end - FInput1E = 64'h3E718B9C00000000; - FInput2E = 64'h643AF79 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2735732\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h27A98A4D00000000; - ans = 64'h5FAD64 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2736733\n"); - end - FInput1E = 64'hC03C515D00000000; - FInput2E = 64'hFB1830C 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'hFFFDFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2737734\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2738735\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hE03FFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h0C0000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2739736\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2740737\n"); - end - FInput1E = 64'h06903DA100000000; - FInput2E = 64'h3B22D24 00000000; - FInput3E = 64'h14FFFFFF00000000; - ans = 64'hC00080 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2741738\n"); - end - FInput1E = 64'hC078007F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2742739\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFEFFFF00000000; - ans = 64'hFFBFFE 700000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2743740\n"); - end - FInput1E = 64'h001FFF8000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2744741\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3F01FFFF00000000; - ans = 64'hF00000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2745742\n"); - end - FInput1E = 64'hB25FFFFF00000000; - FInput2E = 64'hFFBF7FF 00000000; - FInput3E = 64'hABFFC00000000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2746743\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2747744\n"); - end - FInput1E = 64'h3C6FFFFF00000000; - FInput2E = 64'hBFF0000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFE001E 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2748745\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2749746\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'h00FFC00000000000; - ans = 64'h00000E C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2750747\n"); - end - FInput1E = 64'h400FC80000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2751748\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hEEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2752749\n"); - end - FInput1E = 64'hD7AFF00000000000; - FInput2E = 64'h0004000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2753750\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1000000000000000; - ans = 64'h000801 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2754751\n"); - end - FInput1E = 64'h33B8000000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'h07FF85AA00000000; - ans = 64'hD04AEF 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2755752\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2756753\n"); - end - FInput1E = 64'h3FEFEEB600000000; - FInput2E = 64'h93C14EA 00000000; - FInput3E = 64'hDB00000000000000; - ans = 64'h7FFDFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2757754\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2758755\n"); - end - FInput1E = 64'hC0A0000200000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h062AB94400000000; - ans = 64'h8F7A2A 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2759756\n"); - end - FInput1E = 64'h800FC01000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2760757\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0550D69C00000000; - ans = 64'hECECD4 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2761758\n"); - end - FInput1E = 64'hBFCAD61700000000; - FInput2E = 64'hF420EF5 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2762759\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hE300000000000000; - ans = 64'h002000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2763760\n"); - end - FInput1E = 64'h43CF800000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFE18E6E000000000; - ans = 64'h54967C 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2764761\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2765762\n"); - end - FInput1E = 64'h402FFFFF00000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h7FFEFFFF00000000; - ans = 64'hFEFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2766763\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"2767764\n"); - end - FInput1E = 64'hC803FFFF00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hF7FFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2768765\n"); - end - FInput1E = 64'h37EC327400000000; - FInput2E = 64'h5D0631C 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2769766\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00BFFFFF00000000; - ans = 64'hFFF7FE C00000000; - flags = 5'h1D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1D "); - $fwrite(fp,"2770767\n"); - end - FInput1E = 64'hBFB81D2000000000; - FInput2E = 64'h7A1E1EB 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 D00000000; - flags = 5'h36; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"36 "); - $fwrite(fp,"2771768\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200004000000000; - ans = 64'h07FFFE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2772769\n"); - end - FInput1E = 64'h4019749100000000; - FInput2E = 64'h6E4282C 00000000; - FInput3E = 64'hEB00231700000000; - ans = 64'h85EEC2 C00000000; - flags = 5'h41; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41 "); - $fwrite(fp,"2773770\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2774771\n"); - end - FInput1E = 64'h358B2C4100000000; - FInput2E = 64'hEBAD938 00000000; - FInput3E = 64'h8000008000000000; - ans = 64'h000800 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2775772\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2776773\n"); - end - FInput1E = 64'hBFF5DF6300000000; - FInput2E = 64'hE26F3D8 00000000; - FInput3E = 64'h1EC70D9200000000; - ans = 64'h13E637 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2777774\n"); - end - FInput1E = 64'hBDC1FFFF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2778775\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0020EC4B00000000; - ans = 64'h7F8123 400000000; - flags = 5'h38; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"38 "); - $fwrite(fp,"2779776\n"); - end - FInput1E = 64'hBD60000000000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2780777\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFEFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2781778\n"); - end - FInput1E = 64'h4600000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5EDFFFFF00000000; - ans = 64'hF7FFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2782779\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2783780\n"); - end - FInput1E = 64'h43DFC40000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h04B1745200000000; - ans = 64'hE4DFD1 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2784781\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2785782\n"); - end - FInput1E = 64'h403F000000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'hFA62461C00000000; - ans = 64'hC9F307 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2786783\n"); - end - FInput1E = 64'h3E80200000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2787784\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h03FF7F 400000000; - flags = 5'h01; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"01 "); - $fwrite(fp,"2788785\n"); - end - FInput1E = 64'hFFFFFFC000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2789786\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3C40000000000000; - ans = 64'h01FFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2790787\n"); - end - FInput1E = 64'hC03D5A7B00000000; - FInput2E = 64'h8C7D7C4 00000000; - FInput3E = 64'h0B0FFFFD00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2791788\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2792789\n"); - end - FInput1E = 64'hC3DB29C400000000; - FInput2E = 64'hE251F09 00000000; - FInput3E = 64'hFDC7025900000000; - ans = 64'hD9C7B5 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2793790\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'h97; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97 "); - $fwrite(fp,"2794791\n"); - end - FInput1E = 64'hAF1029C500000000; - FInput2E = 64'hA72892E 00000000; - FInput3E = 64'h0002000000000000; - ans = 64'h000FFF 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2795792\n"); - end - FInput1E = 64'hFFE0011F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2796793\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h070BFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2797794\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2798795\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF5B0FC300000000; - ans = 64'h782F4F 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2799796\n"); - end - FInput1E = 64'hB7EFFFF000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'hFCFFFEFF00000000; - ans = 64'hBFFFFF B00000000; - flags = 5'h91; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91 "); - $fwrite(fp,"2800797\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2801798\n"); - end - FInput1E = 64'hBAC0000000000000; - FInput2E = 64'h0403FFE 00000000; - FInput3E = 64'h1C00000000000000; - ans = 64'hEFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2802799\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h54; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54 "); - $fwrite(fp,"2803800\n"); - end - FInput1E = 64'hC1EFFEFF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hE200000000000000; - ans = 64'h020080 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2804801\n"); - end - FInput1E = 64'hB7E1505000000000; - FInput2E = 64'h296A659 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2805802\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h010FCD8700000000; - ans = 64'h3C121A C00000000; - flags = 5'h17; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17 "); - $fwrite(fp,"2806803\n"); - end - FInput1E = 64'h19EFDFFF00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2807804\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hDDFEDFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2808805\n"); - end - FInput1E = 64'h4017FFFF00000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFFF03F 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2809806\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2810807\n"); - end - FInput1E = 64'h2750000000000000; - FInput2E = 64'h08007FF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hBBFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2811808\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"2812809\n"); - end - FInput1E = 64'hBCCFFFC700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF7FFFFFB00000000; - ans = 64'hFFFBFF 700000000; - flags = 5'hDA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DA "); - $fwrite(fp,"2813810\n"); - end - FInput1E = 64'hC03FFFFC00000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2814811\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF1FFFF8000000000; - ans = 64'h000004 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2815812\n"); - end - FInput1E = 64'hB7F82E7D00000000; - FInput2E = 64'hBEC4999 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h37; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"37 "); - $fwrite(fp,"2816813\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'hFBFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2817814\n"); - end - FInput1E = 64'hC0F3FFF700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE0007FF00000000; - ans = 64'h7FFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2818815\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2819816\n"); - end - FInput1E = 64'h47EBE6F700000000; - FInput2E = 64'h617EEF9 00000000; - FInput3E = 64'h05FFFFEF00000000; - ans = 64'hDFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2820817\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2821818\n"); - end - FInput1E = 64'h8016A2F900000000; - FInput2E = 64'h6030168 00000000; - FInput3E = 64'h7FF8000000000000; - ans = 64'h100000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2822819\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFF0000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2823820\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h004FFF 400000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"2824821\n"); - end - FInput1E = 64'hC80FFFF800000000; - FInput2E = 64'h0000006 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2825822\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFDEFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2826823\n"); - end - FInput1E = 64'h468FFFFF00000000; - FInput2E = 64'hFFFEFEF 00000000; - FInput3E = 64'hAAFFFF9F00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2827824\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2828825\n"); - end - FInput1E = 64'h372003FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400400000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2829826\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2830827\n"); - end - FInput1E = 64'hC34FFBFF00000000; - FInput2E = 64'hFFFBFFE 00000000; - FInput3E = 64'h81FFFFF800000000; - ans = 64'h040000 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"2831828\n"); - end - FInput1E = 64'h390163DE00000000; - FInput2E = 64'hD7FDD26 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2832829\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h341FFFFF00000000; - ans = 64'hC00000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2833830\n"); - end - FInput1E = 64'hFFD0000000000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2834831\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3EFFFFF700000000; - ans = 64'h7FFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2835832\n"); - end - FInput1E = 64'h2642000000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'hB300000000000000; - ans = 64'h101000 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2836833\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2837834\n"); - end - FInput1E = 64'h4000080000000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'hF55F75EC00000000; - ans = 64'hFDFEAF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2838835\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2839836\n"); - end - FInput1E = 64'h2AE0000000000000; - FInput2E = 64'h0007FE0 00000000; - FInput3E = 64'hF5FFFFEF00000000; - ans = 64'hFFFFEE C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2840837\n"); - end - FInput1E = 64'h4180000000000000; - FInput2E = 64'h1FEFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2841838\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFDFFFF00000000; - ans = 64'hFFFBFE 200000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2842839\n"); - end - FInput1E = 64'h519FDFFF00000000; - FInput2E = 64'hBFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2843840\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF0007FF00000000; - ans = 64'h000000 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2844841\n"); - end - FInput1E = 64'h5670007F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFDFFFF F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2845842\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2846843\n"); - end - FInput1E = 64'h401FF7FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100400000000000; - ans = 64'h00FFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2847844\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h1C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1C "); - $fwrite(fp,"2848845\n"); - end - FInput1E = 64'hC060080000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'hEFFFFE 300000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"2849846\n"); - end - FInput1E = 64'h3F6C000000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2850847\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCFF3FFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hC6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C6 "); - $fwrite(fp,"2851848\n"); - end - FInput1E = 64'h4002A2A000000000; - FInput2E = 64'h0CEE6CC 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"2852849\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA01000000000000; - ans = 64'h000FFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2853850\n"); - end - FInput1E = 64'hC1803FFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h97FFFFE000000000; - ans = 64'h0001FF C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2854851\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2855852\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'h002FFFF 00000000; - FInput3E = 64'h81FFDFFF00000000; - ans = 64'hFFFC00 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2856853\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2857854\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h1FFFFE0 00000000; - FInput3E = 64'h0600000000000000; - ans = 64'h003FF8 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2858855\n"); - end - FInput1E = 64'hBFB0800000000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2859856\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD00000300000000; - ans = 64'hFFFFFA 000000000; - flags = 5'h24; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"24 "); - $fwrite(fp,"2860857\n"); - end - FInput1E = 64'hB2DFFBFF00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2861858\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF100000000000000; - ans = 64'h80000F 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2862859\n"); - end - FInput1E = 64'h39AFFFFF00000000; - FInput2E = 64'hFFE03FF 00000000; - FInput3E = 64'h137FFFFF00000000; - ans = 64'hFFF800 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2863860\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2864861\n"); - end - FInput1E = 64'h0660000000000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hD0FFFFFC00000000; - ans = 64'h00007F C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2865862\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2866863\n"); - end - FInput1E = 64'h480FFFFE00000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'h4DD7F54B00000000; - ans = 64'h4ADB02 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2867864\n"); - end - FInput1E = 64'hC7E711D700000000; - FInput2E = 64'h8373AC1 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2868865\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h2BFFFBFF00000000; - ans = 64'hFFFFE0 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2869866\n"); - end - FInput1E = 64'h3E00000800000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"2870867\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0EFFEFDF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2871868\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000FBF 00000000; - FInput3E = 64'h1DFFF6FF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2872869\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2873870\n"); - end - FInput1E = 64'h42B0400300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h05FFFFFF00000000; - ans = 64'h008000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2874871\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2875872\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'h8000000 00000000; - FInput3E = 64'h0A68B21A00000000; - ans = 64'h154C74 D00000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"2876873\n"); - end - FInput1E = 64'hBE2FFFF700000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2877874\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h880000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2878875\n"); - end - FInput1E = 64'hC80FFFE000000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2879876\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h96FFFFBF00000000; - ans = 64'hFFFC00 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2880877\n"); - end - FInput1E = 64'hC050008000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h5FFFFFFF00000000; - ans = 64'h0007FF C00000000; - flags = 5'h13; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13 "); - $fwrite(fp,"2881878\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2882879\n"); - end - FInput1E = 64'h3FE00FFF00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hDD3FEFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2883880\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2884881\n"); - end - FInput1E = 64'hC1CFFFFE00000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h73698EB200000000; - ans = 64'h56CB2E 400000000; - flags = 5'hF5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F5 "); - $fwrite(fp,"2885882\n"); - end - FInput1E = 64'hC03FDFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2886883\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FB8DEF00000000; - ans = 64'h5217BC C00000000; - flags = 5'h78; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"78 "); - $fwrite(fp,"2887884\n"); - end - FInput1E = 64'h38100FFF00000000; - FInput2E = 64'hFF00000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2888885\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE700000800000000; - ans = 64'h000800 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2889886\n"); - end - FInput1E = 64'h3EF0002F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5E40196700000000; - ans = 64'hD52C33 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2890887\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2891888\n"); - end - FInput1E = 64'h80255B5600000000; - FInput2E = 64'h7EEB6FE 00000000; - FInput3E = 64'h1E86BE5800000000; - ans = 64'hB7BA44 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2892889\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2893890\n"); - end - FInput1E = 64'hB7E744F800000000; - FInput2E = 64'h47E2AEA 00000000; - FInput3E = 64'hE26D8A8200000000; - ans = 64'h64B5D1 E00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2894891\n"); - end - FInput1E = 64'h402FC00100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2895892\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC4FFC00000000000; - ans = 64'h7FFFFE C00000000; - flags = 5'h2B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2B "); - $fwrite(fp,"2896893\n"); - end - FInput1E = 64'hBFC0000000000000; - FInput2E = 64'h07FFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"2897894\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h2EFFFFDF00000000; - ans = 64'hFEFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2898895\n"); - end - FInput1E = 64'hC00EFFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'h1C70C5E100000000; - ans = 64'h977664 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2899896\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2900897\n"); - end - FInput1E = 64'h4021000000000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h1E3DC0C200000000; - ans = 64'hFC1AE3 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2901898\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2902899\n"); - end - FInput1E = 64'hA330000000000000; - FInput2E = 64'h03FF7FF 00000000; - FInput3E = 64'h3FC0000000000000; - ans = 64'h00001E C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2903900\n"); - end - FInput1E = 64'h870758E900000000; - FInput2E = 64'h961D160 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2904901\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF2FFFFFF00000000; - ans = 64'h0007FF B00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"2905902\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2906903\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h160000FF00000000; - ans = 64'hF7FFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2907904\n"); - end - FInput1E = 64'h43B3FAD700000000; - FInput2E = 64'hA6A5A79 00000000; - FInput3E = 64'hFF7DDB0300000000; - ans = 64'h330399 A00000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"2908905\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2909906\n"); - end - FInput1E = 64'hC310000000000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h027FFFFF00000000; - ans = 64'hF00000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2910907\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2911908\n"); - end - FInput1E = 64'h47FC508100000000; - FInput2E = 64'hA629D6A 00000000; - FInput3E = 64'h7F20211000000000; - ans = 64'h043FAD 400000000; - flags = 5'hE4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E4 "); - $fwrite(fp,"2912909\n"); - end - FInput1E = 64'h3FF0800000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2913910\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFF7FFF00000000; - ans = 64'hF00000 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2914911\n"); - end - FInput1E = 64'hD610000000000000; - FInput2E = 64'h2000010 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"2915912\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000800000000; - ans = 64'h00007F 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2916913\n"); - end - FInput1E = 64'h400FEFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h8100002000000000; - ans = 64'h0FFFFF C00000000; - flags = 5'h33; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33 "); - $fwrite(fp,"2917914\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2918915\n"); - end - FInput1E = 64'hC03906DC00000000; - FInput2E = 64'hD055D73 00000000; - FInput3E = 64'h1E00000F00000000; - ans = 64'hFBFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2919916\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2920917\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFB80 00000000; - FInput3E = 64'h3C612BC600000000; - ans = 64'h92524C D00000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"2921918\n"); - end - FInput1E = 64'hBEA5F2F800000000; - FInput2E = 64'h82481B9 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2922919\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC003FFFF00000000; - ans = 64'hBFFFFE 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2923920\n"); - end - FInput1E = 64'hC03FFEFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2924921\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCFFF000000000000; - ans = 64'h000400 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2925922\n"); - end - FInput1E = 64'h7FFEFFFF00000000; - FInput2E = 64'hFFFFFF0 00000000; - FInput3E = 64'h81003FFF00000000; - ans = 64'hBFFFFF D00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2926923\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2927924\n"); - end - FInput1E = 64'h37F043C600000000; - FInput2E = 64'h5442FB4 00000000; - FInput3E = 64'h77FF7FFF00000000; - ans = 64'hFFDFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2928925\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2929926\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'h000FDFE 00000000; - FInput3E = 64'h0000800000000000; - ans = 64'h07FFFF B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"2930927\n"); - end - FInput1E = 64'hAA2E71A500000000; - FInput2E = 64'hD29C71E 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2931928\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01F9C48900000000; - ans = 64'h166F5A C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"2932929\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h002001F 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2933930\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0110000000000000; - ans = 64'h03FFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2934931\n"); - end - FInput1E = 64'hC3C0000000000000; - FInput2E = 64'h000002F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0007FF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2935932\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2936933\n"); - end - FInput1E = 64'hFFD0000000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h00FFFE0300000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2937934\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2938935\n"); - end - FInput1E = 64'hB7E0004000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hEFFC00 C00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"2939936\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h0404000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2940937\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFF800800000000; - ans = 64'h000000 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2941938\n"); - end - FInput1E = 64'hBF30000000000000; - FInput2E = 64'h001FDFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h18; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"18 "); - $fwrite(fp,"2942939\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h9A4677A500000000; - ans = 64'h81327F 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"2943940\n"); - end - FInput1E = 64'h4023A37C00000000; - FInput2E = 64'hD73D80E 00000000; - FInput3E = 64'hEECC87A700000000; - ans = 64'h880ADE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"2944941\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2945942\n"); - end - FInput1E = 64'h87BFFFFF00000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'h7F00020000000000; - ans = 64'h00FFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2946943\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"2947944\n"); - end - FInput1E = 64'h4034000000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hFDFEC31100000000; - ans = 64'h2D9B88 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"2948945\n"); - end - FInput1E = 64'h1ADFFFFF00000000; - FInput2E = 64'hF7FFFFB 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2949946\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hC900004700000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2950947\n"); - end - FInput1E = 64'hBF10000000000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2951948\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h2AFFFDFF00000000; - ans = 64'hFFFF00 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2952949\n"); - end - FInput1E = 64'h4033B75F00000000; - FInput2E = 64'h0ECFE6E 00000000; - FInput3E = 64'h26000FFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"2953950\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2954951\n"); - end - FInput1E = 64'hC01FFBFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h7EE7A40500000000; - ans = 64'h1D8DC7 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"2955952\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hDA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DA "); - $fwrite(fp,"2956953\n"); - end - FInput1E = 64'h402FFFFF00000000; - FInput2E = 64'hFBFFF7F 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'hFDFFFF C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2957954\n"); - end - FInput1E = 64'h402FF80000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2958955\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1EFFF00000000000; - ans = 64'h7FFFFF 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2959956\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'hD800000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2960957\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FA7328200000000; - ans = 64'hED5956 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"2961958\n"); - end - FInput1E = 64'h7FDAA6A400000000; - FInput2E = 64'h94FE1DE 00000000; - FInput3E = 64'h0700000F00000000; - ans = 64'hFFFFDF C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2962959\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2963960\n"); - end - FInput1E = 64'hE8D01E2C00000000; - FInput2E = 64'h9865900 00000000; - FInput3E = 64'hFE05FFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"2964961\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"2965962\n"); - end - FInput1E = 64'hC005D40A00000000; - FInput2E = 64'h5C6E463 00000000; - FInput3E = 64'h0200007B00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2966963\n"); - end - FInput1E = 64'hC040000000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2967964\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hC4F8000000000000; - ans = 64'h002000 F00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"2968965\n"); - end - FInput1E = 64'h402001BF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"2969966\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0913AD4B00000000; - ans = 64'h635ED8 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2970967\n"); - end - FInput1E = 64'hBFC0200000000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'hFB07FFFF00000000; - ans = 64'hFFFDFF 300000000; - flags = 5'hBE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BE "); - $fwrite(fp,"2971968\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2972969\n"); - end - FInput1E = 64'h3E73FFFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hFB00100800000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2973970\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2974971\n"); - end - FInput1E = 64'h480EFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFCF3B91C00000000; - ans = 64'hED419A B00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"2975972\n"); - end - FInput1E = 64'hFFE01FFF00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2976973\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h200000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2977974\n"); - end - FInput1E = 64'hB7FFFFFF00000000; - FInput2E = 64'hFFFFDEF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"2978975\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80DFFFFF00000000; - ans = 64'hFFFFFC C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2979976\n"); - end - FInput1E = 64'hC160080000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F83313900000000; - ans = 64'hE217E3 700000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"2980977\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2981978\n"); - end - FInput1E = 64'h3FBFFF8000000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'hFEFF7FFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"2982979\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2983980\n"); - end - FInput1E = 64'hC02179D400000000; - FInput2E = 64'hCC62444 00000000; - FInput3E = 64'h3FFFFFFE00000000; - ans = 64'h0FFFFE F00000000; - flags = 5'hDD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DD "); - $fwrite(fp,"2984981\n"); - end - FInput1E = 64'hC3E001BF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2985982\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h36003FBF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2986983\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000102 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"2987984\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h808D410100000000; - ans = 64'hAC7D2F 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"2988985\n"); - end - FInput1E = 64'hC1CFFFFF00000000; - FInput2E = 64'h8000000 00000000; - FInput3E = 64'hFB10000000000000; - ans = 64'h000FFF A00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"2989986\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"2990987\n"); - end - FInput1E = 64'hF548B84F00000000; - FInput2E = 64'hAF73F10 00000000; - FInput3E = 64'h12CFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"2991988\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"2992989\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'h7DFFFFF 00000000; - FInput3E = 64'hFFA9034B00000000; - ans = 64'h075DDD 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"2993990\n"); - end - FInput1E = 64'hC7F91D7100000000; - FInput2E = 64'h24F648D 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"2994991\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EFE000000000000; - ans = 64'h000007 C00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"2995992\n"); - end - FInput1E = 64'h47F0000000000000; - FInput2E = 64'h000403F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hCD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CD "); - $fwrite(fp,"2996993\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCDFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"2997994\n"); - end - FInput1E = 64'hBFC0000000000000; - FInput2E = 64'h003DFFF 00000000; - FInput3E = 64'hFB00FFFE00000000; - ans = 64'h000000 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"2998995\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"2999996\n"); - end - FInput1E = 64'h402FFFE000000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'hDFFFFF0800000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3000997\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3001998\n"); - end - FInput1E = 64'hB810007F00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'hFF8001 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3002999\n"); - end - FInput1E = 64'hAAFCFDA800000000; - FInput2E = 64'hE659E8A 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3004000\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h1DFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3005001\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3006002\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C00000000000000; - ans = 64'h003FFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3007003\n"); - end - FInput1E = 64'h37FFF80000000000; - FInput2E = 64'h0004000 00000000; - FInput3E = 64'h00507DE100000000; - ans = 64'h7B4FDF C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3008004\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3009005\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h004003F 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hBFFF7F B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3010006\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'h19; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19 "); - $fwrite(fp,"3011007\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'h07FFFDE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFEB 300000000; - flags = 5'hE5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E5 "); - $fwrite(fp,"3012008\n"); - end - FInput1E = 64'h3FD666E600000000; - FInput2E = 64'h6C8C206 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3013009\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFEFFDF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3014010\n"); - end - FInput1E = 64'h3DB0000200000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3015011\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'hFE03FE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3016012\n"); - end - FInput1E = 64'hC29FFDFF00000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'h7EFFFFDB00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3017013\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3018014\n"); - end - FInput1E = 64'hBF10000100000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h23FF7FFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3019015\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3020016\n"); - end - FInput1E = 64'h37FFF7FF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h7F00000100000000; - ans = 64'hEFFFFF 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3021017\n"); - end - FInput1E = 64'h396DFFFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3022018\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h010D405C00000000; - ans = 64'hB3C97F C00000000; - flags = 5'h3D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3D "); - $fwrite(fp,"3023019\n"); - end - FInput1E = 64'hBFC647C000000000; - FInput2E = 64'h08C22CB 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h6C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6C "); - $fwrite(fp,"3024020\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9300001F00000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3025021\n"); - end - FInput1E = 64'h41CFF80000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'hDDAB126D00000000; - ans = 64'hE39DAE 700000000; - flags = 5'hDC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DC "); - $fwrite(fp,"3026022\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3027023\n"); - end - FInput1E = 64'h402FFFFF00000000; - FInput2E = 64'hFBFF7FF 00000000; - FInput3E = 64'h0305326800000000; - ans = 64'h68D0BB 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3028024\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h3B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3B "); - $fwrite(fp,"3029025\n"); - end - FInput1E = 64'h4EB0007D00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF3FFBBFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3030026\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3031027\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3E7CC3FA00000000; - ans = 64'hD64E37 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3032028\n"); - end - FInput1E = 64'h40103FFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"3033029\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF3FFFFFF00000000; - ans = 64'hBFFFBF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3034030\n"); - end - FInput1E = 64'h37ECF99400000000; - FInput2E = 64'h202B814 00000000; - FInput3E = 64'h0B00040000000000; - ans = 64'h000020 C00000000; - flags = 5'hC3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C3 "); - $fwrite(fp,"3035031\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3036032\n"); - end - FInput1E = 64'hC80FFFFF00000000; - FInput2E = 64'h7FFFFFC 00000000; - FInput3E = 64'hFFFFFFFE00000000; - ans = 64'hFBFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3037033\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3038034\n"); - end - FInput1E = 64'h44F271F200000000; - FInput2E = 64'hD769725 00000000; - FInput3E = 64'hFF0003FF00000000; - ans = 64'h7FFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3039035\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h40001FF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3040036\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hFFFBFF C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3041037\n"); - end - FInput1E = 64'hBECFFFFE00000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 800000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3042038\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0725898100000000; - ans = 64'h61D84A 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3043039\n"); - end - FInput1E = 64'hBE07FFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FEBDE0200000000; - ans = 64'h00377A 400000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3044040\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3045041\n"); - end - FInput1E = 64'hF8C4A99F00000000; - FInput2E = 64'h335A642 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'h0FFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3046042\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"3047043\n"); - end - FInput1E = 64'h401FFFBF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF1FFFFF00000000; - ans = 64'hFFFFF7 300000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"3048044\n"); - end - FInput1E = 64'hBFE0001F00000000; - FInput2E = 64'hFFFFBFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3049045\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF8FFE80000000000; - ans = 64'h000000 B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3050046\n"); - end - FInput1E = 64'hC04046D200000000; - FInput2E = 64'h2EBC845 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3051047\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2E00FFFF00000000; - ans = 64'hFFFDFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3052048\n"); - end - FInput1E = 64'hBFF081B900000000; - FInput2E = 64'hD048027 00000000; - FInput3E = 64'hFDBD67CC00000000; - ans = 64'hF0BF0D 200000000; - flags = 5'hE9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E9 "); - $fwrite(fp,"3053049\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3054050\n"); - end - FInput1E = 64'h802FFFFF00000000; - FInput2E = 64'hFFFFFCF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hFFBFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3055051\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"3056052\n"); - end - FInput1E = 64'h3810004000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1F38DBB900000000; - ans = 64'hA53F37 500000000; - flags = 5'hE4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E4 "); - $fwrite(fp,"3057053\n"); - end - FInput1E = 64'hB240001000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3058054\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFCB7D34600000000; - ans = 64'h20D4D8 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3059055\n"); - end - FInput1E = 64'hDD58FAAD00000000; - FInput2E = 64'h850A1BE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hD7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D7 "); - $fwrite(fp,"3060056\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E00080000000000; - ans = 64'h7FFFFE 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3061057\n"); - end - FInput1E = 64'hB81003FF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'hFEFF400000000000; - ans = 64'h000000 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"3062058\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3063059\n"); - end - FInput1E = 64'hBFD08C2900000000; - FInput2E = 64'hD9E48B5 00000000; - FInput3E = 64'hFB80000000000000; - ans = 64'h000200 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3064060\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h19; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"19 "); - $fwrite(fp,"3065061\n"); - end - FInput1E = 64'hFFF7FFFF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'h02FFFDFF00000000; - ans = 64'hEFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3066062\n"); - end - FInput1E = 64'hBFFFFC0000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3067063\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFC4E9D3D00000000; - ans = 64'h78B53D 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3068064\n"); - end - FInput1E = 64'h3000000000000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"3069065\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h006AA53800000000; - ans = 64'h9FDD3D 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3070066\n"); - end - FInput1E = 64'hBFDFFFF700000000; - FInput2E = 64'hFFFFF7F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h00000F 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3071067\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3072068\n"); - end - FInput1E = 64'hB71FA9F300000000; - FInput2E = 64'hD1F6032 00000000; - FInput3E = 64'h0200007F00000000; - ans = 64'hFFFBFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3073069\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3074070\n"); - end - FInput1E = 64'h3F00000000000000; - FInput2E = 64'h04FFFFE 00000000; - FInput3E = 64'hCAC0002000000000; - ans = 64'h000000 400000000; - flags = 5'h4C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4C "); - $fwrite(fp,"3075071\n"); - end - FInput1E = 64'h657FFFFF00000000; - FInput2E = 64'hFFDFFC0 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3076072\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F0001FF00000000; - ans = 64'hFFFBFE 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3077073\n"); - end - FInput1E = 64'hC800040000000000; - FInput2E = 64'h3FFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3078074\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h9F02000000000000; - ans = 64'h00001F C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3079075\n"); - end - FInput1E = 64'hBFEFFF8000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'hDA10000000000000; - ans = 64'h07FFFE C00000000; - flags = 5'hD2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D2 "); - $fwrite(fp,"3080076\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3081077\n"); - end - FInput1E = 64'hC3E0000000000000; - FInput2E = 64'h400FFFE 00000000; - FInput3E = 64'h91FDF7FF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3082078\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3083079\n"); - end - FInput1E = 64'hA75DFFFF00000000; - FInput2E = 64'hBFFFFFE 00000000; - FInput3E = 64'hFD00FF8000000000; - ans = 64'h000000 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3084080\n"); - end - FInput1E = 64'h7FF003F000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3085081\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EFFFFF700000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3086082\n"); - end - FInput1E = 64'hBAA7B37300000000; - FInput2E = 64'h0E499AD 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3087083\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h2300003F00000000; - ans = 64'hEFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3088084\n"); - end - FInput1E = 64'hC09921A900000000; - FInput2E = 64'h8F2237E 00000000; - FInput3E = 64'h3F00020000000000; - ans = 64'h1FFFFE 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3089085\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3090086\n"); - end - FInput1E = 64'hBFE5638800000000; - FInput2E = 64'hCA472B3 00000000; - FInput3E = 64'h0207FFFB00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3091087\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3092088\n"); - end - FInput1E = 64'hC3D0010000000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'hFCFFFC0000000000; - ans = 64'h001FFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3093089\n"); - end - FInput1E = 64'hFFD9176700000000; - FInput2E = 64'h344F70E 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3094090\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h9F65469E00000000; - ans = 64'h7D5563 C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3095091\n"); - end - FInput1E = 64'h0016724000000000; - FInput2E = 64'h426EFE0 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3096092\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7EFFFF3F00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3097093\n"); - end - FInput1E = 64'hCC95140500000000; - FInput2E = 64'hBD9848C 00000000; - FInput3E = 64'h3F00020000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3098094\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3099095\n"); - end - FInput1E = 64'h412FC00000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h02FFC00000000000; - ans = 64'h1FFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3100096\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3101097\n"); - end - FInput1E = 64'h404F9FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1100000F00000000; - ans = 64'hFFF000 B00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3102098\n"); - end - FInput1E = 64'hD4EFFEFF00000000; - FInput2E = 64'hFFFFBFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3103099\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFEF00000000; - ans = 64'hFFF000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3104100\n"); - end - FInput1E = 64'hEB60000000000000; - FInput2E = 64'h0000440 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'h4B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4B "); - $fwrite(fp,"3105101\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h23081FFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3106102\n"); - end - FInput1E = 64'hC701739500000000; - FInput2E = 64'h7506FEF 00000000; - FInput3E = 64'hE4FDFFFF00000000; - ans = 64'hFDFFFE C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3107103\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3108104\n"); - end - FInput1E = 64'h0CBFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'hFFFEFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3109105\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E7 "); - $fwrite(fp,"3110106\n"); - end - FInput1E = 64'h24E0002300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF0F2BB200000000; - ans = 64'hDD70CC 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3111107\n"); - end - FInput1E = 64'hC070002000000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3112108\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FF7FFFF00000000; - ans = 64'hF7FFFF 300000000; - flags = 5'h48; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48 "); - $fwrite(fp,"3113109\n"); - end - FInput1E = 64'h4020000000000000; - FInput2E = 64'h3FFFF00 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3114110\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFFF7FF00000000; - ans = 64'hF80000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3115111\n"); - end - FInput1E = 64'h43C4000000000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'hEF00000000000000; - ans = 64'h00005E 400000000; - flags = 5'h81; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"81 "); - $fwrite(fp,"3116112\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3117113\n"); - end - FInput1E = 64'h16C0000000000000; - FInput2E = 64'h00007DF 00000000; - FInput3E = 64'h22FC000000000000; - ans = 64'h00007E 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3118114\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3119115\n"); - end - FInput1E = 64'h43C0000000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h9120007F00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h12; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12 "); - $fwrite(fp,"3120116\n"); - end - FInput1E = 64'hC00FFFFE00000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3121117\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C00020000000000; - ans = 64'h7FFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3122118\n"); - end - FInput1E = 64'hBFFFE00000000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3123119\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1700800000000000; - ans = 64'h00FFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3124120\n"); - end - FInput1E = 64'h3FBF31FF00000000; - FInput2E = 64'hF2CCEFB 00000000; - FInput3E = 64'hCAA17B8600000000; - ans = 64'hB00A57 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3125121\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3126122\n"); - end - FInput1E = 64'hBF90000200000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'hFF00000200000000; - ans = 64'h00003E 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3127123\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 500000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3128124\n"); - end - FInput1E = 64'hC1907FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFFFEF00000000; - ans = 64'hBFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3129125\n"); - end - FInput1E = 64'hBFB2467A00000000; - FInput2E = 64'h0F81D4C 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3130126\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h9F00000000000000; - ans = 64'hFFFFEF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3131127\n"); - end - FInput1E = 64'hC06F000000000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"3132128\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E7C401F00000000; - ans = 64'h3E0977 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3133129\n"); - end - FInput1E = 64'h41E017FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3000000000000000; - ans = 64'h000082 B00000000; - flags = 5'h58; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58 "); - $fwrite(fp,"3134130\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3135131\n"); - end - FInput1E = 64'hBF10000000000000; - FInput2E = 64'h007FFEF 00000000; - FInput3E = 64'h19FFFFFF00000000; - ans = 64'h7FFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3136132\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3137133\n"); - end - FInput1E = 64'hBFB0000400000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h03FFEFFF00000000; - ans = 64'hFF7FFF 400000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"3138134\n"); - end - FInput1E = 64'hC7FFDFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3139135\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hD45F248C00000000; - ans = 64'hCC670F B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3140136\n"); - end - FInput1E = 64'hC1C8A94B00000000; - FInput2E = 64'h5575819 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3141137\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1EB3B9AC00000000; - ans = 64'h479B74 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3142138\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'hFF80400 00000000; - FInput3E = 64'h1F1FFF7F00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3143139\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3144140\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFC10 00000000; - FInput3E = 64'hD50FAB9700000000; - ans = 64'h64E136 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3145141\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3146142\n"); - end - FInput1E = 64'h0010916E00000000; - FInput2E = 64'h93A4F7D 00000000; - FInput3E = 64'h04FFFFFE00000000; - ans = 64'hFFEFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3147143\n"); - end - FInput1E = 64'hC3ED34FF00000000; - FInput2E = 64'hEBA9A7F 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3148144\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03FFFFE000000000; - ans = 64'h003FFF 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3149145\n"); - end - FInput1E = 64'hB800008000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3150146\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F00020000000000; - ans = 64'h3FFFFE B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3151147\n"); - end - FInput1E = 64'hBFA0000100000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h07FFF8 000000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3152148\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3153149\n"); - end - FInput1E = 64'h40FFBFFF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h800001FF00000000; - ans = 64'hF7FFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3154150\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A5 "); - $fwrite(fp,"3155151\n"); - end - FInput1E = 64'hC3E0000000000000; - FInput2E = 64'h3FFFFBF 00000000; - FInput3E = 64'hFB6BA70D00000000; - ans = 64'h5A81EF 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"3156152\n"); - end - FInput1E = 64'hB6DC3FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3157153\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFF6600A00000000; - ans = 64'h627F38 F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3158154\n"); - end - FInput1E = 64'hC03BFFFC00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3159155\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h22FFFFFF00000000; - ans = 64'hC00200 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3160156\n"); - end - FInput1E = 64'hC018634C00000000; - FInput2E = 64'h1EA369A 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hEFFFFF B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3161157\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3162158\n"); - end - FInput1E = 64'h0020000400000000; - FInput2E = 64'h0010000 00000000; - FInput3E = 64'h0200020300000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3163159\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3164160\n"); - end - FInput1E = 64'hC3C03FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7B007FFF00000000; - ans = 64'hFFFF80 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3165161\n"); - end - FInput1E = 64'h876DFFFF00000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3166162\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3CFFFFF800000000; - ans = 64'h003FFF C00000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"3167163\n"); - end - FInput1E = 64'h3F61E92500000000; - FInput2E = 64'h185F10A 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"3168164\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8005B99F00000000; - ans = 64'h6C2F9F 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3169165\n"); - end - FInput1E = 64'h3F4F000000000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'hFD00000200000000; - ans = 64'h0007FF 400000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"3170166\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3171167\n"); - end - FInput1E = 64'hC3DF787000000000; - FInput2E = 64'hE492D29 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3172168\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hB1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B1 "); - $fwrite(fp,"3173169\n"); - end - FInput1E = 64'h43F7C05400000000; - FInput2E = 64'hE92930E 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000BFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3174170\n"); - end - FInput1E = 64'h3F30000400000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3175171\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE5007FFF00000000; - ans = 64'hFFFFF8 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3176172\n"); - end - FInput1E = 64'hC1EFFFFF00000000; - FInput2E = 64'hFC0007F 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3177173\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000100000000; - ans = 64'h000008 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3178174\n"); - end - FInput1E = 64'hC1FFFFF000000000; - FInput2E = 64'h01FFFFE 00000000; - FInput3E = 64'h341FFFFF00000000; - ans = 64'hFFDFFE B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3179175\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3180176\n"); - end - FInput1E = 64'hBFF0000100000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'hFD000FFF00000000; - ans = 64'hFFFEFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3181177\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3182178\n"); - end - FInput1E = 64'h4C3FFFFF00000000; - FInput2E = 64'hFFFE020 00000000; - FInput3E = 64'h0500000000000000; - ans = 64'hF7FFFE 300000000; - flags = 5'hFB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FB "); - $fwrite(fp,"3183179\n"); - end - FInput1E = 64'h47F001FF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3184180\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03CF6BD900000000; - ans = 64'h59E404 900000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3185181\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3186182\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFC00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3187183\n"); - end - FInput1E = 64'h3F000FFF00000000; - FInput2E = 64'hFFFBFFF 00000000; - FInput3E = 64'h81278AC800000000; - ans = 64'h3B2F56 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3188184\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3189185\n"); - end - FInput1E = 64'hC04F844A00000000; - FInput2E = 64'h61FCE58 00000000; - FInput3E = 64'hFB0000FF00000000; - ans = 64'hFEFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3190186\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3191187\n"); - end - FInput1E = 64'hC3E0000100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3D3FFFFF00000000; - ans = 64'hF7FFFF 400000000; - flags = 5'h15; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"15 "); - $fwrite(fp,"3192188\n"); - end - FInput1E = 64'h427FFFFF00000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3193189\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h9AFFFFFF00000000; - ans = 64'hFBFFFF 000000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"3194190\n"); - end - FInput1E = 64'h405FFF0000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"3195191\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h961FFFFF00000000; - ans = 64'hFFFFEE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3196192\n"); - end - FInput1E = 64'h41F7629900000000; - FInput2E = 64'hC28D42B 00000000; - FInput3E = 64'h9408024F00000000; - ans = 64'hF5BD9B C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3197193\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3198194\n"); - end - FInput1E = 64'h41FFFFFF00000000; - FInput2E = 64'hFFFEFFC 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'hFFF820 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3199195\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h2D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2D "); - $fwrite(fp,"3200196\n"); - end - FInput1E = 64'h3FCE000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h08CC1F9E00000000; - ans = 64'hA1F7DC 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3201197\n"); - end - FInput1E = 64'hFFDFFFF000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3202198\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hD008000000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"3203199\n"); - end - FInput1E = 64'h4470000000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"3204200\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07FFFDFF00000000; - ans = 64'hFFFF7F F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3205201\n"); - end - FInput1E = 64'hC7E4001F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA20000FF00000000; - ans = 64'hFFDFFF 300000000; - flags = 5'h21; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21 "); - $fwrite(fp,"3206202\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3207203\n"); - end - FInput1E = 64'hC1F0082000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34D8000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3208204\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h8A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8A "); - $fwrite(fp,"3209205\n"); - end - FInput1E = 64'hC19B268500000000; - FInput2E = 64'h0026FE1 00000000; - FInput3E = 64'hF100002000000000; - ans = 64'h080000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3210206\n"); - end - FInput1E = 64'hA2110FFB00000000; - FInput2E = 64'hAC5B667 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3211207\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1200001F00000000; - ans = 64'hFFDFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3212208\n"); - end - FInput1E = 64'h4030200000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3213209\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80C7AD7500000000; - ans = 64'h821BCA 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3214210\n"); - end - FInput1E = 64'hFFD0000200000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F5C3A3A00000000; - ans = 64'h004936 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3215211\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3216212\n"); - end - FInput1E = 64'h3F41000000000000; - FInput2E = 64'h0000010 00000000; - FInput3E = 64'hFC00000400000000; - ans = 64'h001000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3217213\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h8C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8C "); - $fwrite(fp,"3218214\n"); - end - FInput1E = 64'hC3C0001000000000; - FInput2E = 64'h4000000 00000000; - FInput3E = 64'h1F4F452600000000; - ans = 64'h6DA56A 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3219215\n"); - end - FInput1E = 64'hC3D2145E00000000; - FInput2E = 64'hB3D4313 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3220216\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hC700810000000000; - ans = 64'h000000 A00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3221217\n"); - end - FInput1E = 64'h41DFFFFF00000000; - FInput2E = 64'hDFFFBFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h02; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"02 "); - $fwrite(fp,"3222218\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1C00000000000000; - ans = 64'h3FF7FF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3223219\n"); - end - FInput1E = 64'hB80329DA00000000; - FInput2E = 64'h8F1C768 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h000800 800000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3224220\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3225221\n"); - end - FInput1E = 64'h3850077F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hC4FFF00000000000; - ans = 64'h004000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3226222\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3227223\n"); - end - FInput1E = 64'hB7F0000000000000; - FInput2E = 64'h3FFE000 00000000; - FInput3E = 64'hEB00000000000000; - ans = 64'h01FFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3228224\n"); - end - FInput1E = 64'hC1C1F42600000000; - FInput2E = 64'hD904BF0 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3229225\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1780000000000000; - ans = 64'h03FFFF C00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3230226\n"); - end - FInput1E = 64'hD24FE00100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3231227\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hDAC0200000000000; - ans = 64'h000000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3232228\n"); - end - FInput1E = 64'h406FFEFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h010000FF00000000; - ans = 64'hFFFFEF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3233229\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3234230\n"); - end - FInput1E = 64'hDB1000FF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h1400000400000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3235231\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h91; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"91 "); - $fwrite(fp,"3236232\n"); - end - FInput1E = 64'hC0DAB9C000000000; - FInput2E = 64'h683188D 00000000; - FInput3E = 64'hFE00003F00000000; - ans = 64'hFFFFC0 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3237233\n"); - end - FInput1E = 64'h3F8FFFFF00000000; - FInput2E = 64'hFFFFC0F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3238234\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FC000000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h48; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"48 "); - $fwrite(fp,"3239235\n"); - end - FInput1E = 64'hAFA0000000000000; - FInput2E = 64'hFFF0000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3240236\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0700000000000000; - ans = 64'h010002 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3241237\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hF7FFFF0 00000000; - FInput3E = 64'hE3FFFFFE00000000; - ans = 64'hFFFFFD 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3242238\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3243239\n"); - end - FInput1E = 64'hB818480E00000000; - FInput2E = 64'h470663F 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hFE1000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3244240\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"3245241\n"); - end - FInput1E = 64'h3FBFFF8000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h812F934F00000000; - ans = 64'h2947CE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3246242\n"); - end - FInput1E = 64'h3FB433D900000000; - FInput2E = 64'hF35527E 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3247243\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4CFFFFFD00000000; - ans = 64'hFE0000 300000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"3248244\n"); - end - FInput1E = 64'hB7EFFDFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hBD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BD "); - $fwrite(fp,"3249245\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hDA3FFFFF00000000; - ans = 64'hFFFDFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3250246\n"); - end - FInput1E = 64'h40FFFDFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h0E9BE25300000000; - ans = 64'hF836C9 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"3251247\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3252248\n"); - end - FInput1E = 64'hFB6FFFFF00000000; - FInput2E = 64'hFF8007F 00000000; - FInput3E = 64'h2400FFFF00000000; - ans = 64'hFFFBFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3253249\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3254250\n"); - end - FInput1E = 64'h3CA6938A00000000; - FInput2E = 64'h0E67C97 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3255251\n"); - end - FInput1E = 64'hD8EFFEFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3256252\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h15FFF00700000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hB3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B3 "); - $fwrite(fp,"3257253\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'h3FFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hC1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C1 "); - $fwrite(fp,"3258254\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD07858200000000; - ans = 64'hC0D594 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3259255\n"); - end - FInput1E = 64'h4190A15700000000; - FInput2E = 64'h3848A23 00000000; - FInput3E = 64'hF800000000000000; - ans = 64'h40007F B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3260256\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3261257\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h000400E 00000000; - FInput3E = 64'h5DFFFFFF00000000; - ans = 64'hFFFDC0 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3262258\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"3263259\n"); - end - FInput1E = 64'hC02FFFFE00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h000008 300000000; - flags = 5'h17; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17 "); - $fwrite(fp,"3264260\n"); - end - FInput1E = 64'hC07FFFFF00000000; - FInput2E = 64'h7FFF7FF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3265261\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFE00000000; - ans = 64'hDFFFFF C00000000; - flags = 5'h14; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"14 "); - $fwrite(fp,"3266262\n"); - end - FInput1E = 64'hC7FFFFB700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h42; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"42 "); - $fwrite(fp,"3267263\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0504001F00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3268264\n"); - end - FInput1E = 64'hC7FF5C3300000000; - FInput2E = 64'h4617C31 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFDFFF 300000000; - flags = 5'hFB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FB "); - $fwrite(fp,"3269265\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3270266\n"); - end - FInput1E = 64'h0020040000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hCDC4104F00000000; - ans = 64'hCF94E7 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3271267\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"3272268\n"); - end - FInput1E = 64'h3FBFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hC00007 400000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"3273269\n"); - end - FInput1E = 64'h43627F4A00000000; - FInput2E = 64'hB7A5C8E 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3274270\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F7FFDFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3275271\n"); - end - FInput1E = 64'h3CA96C6300000000; - FInput2E = 64'hCAB2606 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3276272\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD0FFFEFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3277273\n"); - end - FInput1E = 64'hC036E85C00000000; - FInput2E = 64'hC65419F 00000000; - FInput3E = 64'h9600000000000000; - ans = 64'h000000 C00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"3278274\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3279275\n"); - end - FInput1E = 64'hBCA7C5E000000000; - FInput2E = 64'h79CD402 00000000; - FInput3E = 64'hC0FFFFFF00000000; - ans = 64'hFF7FDF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3280276\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h13; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13 "); - $fwrite(fp,"3281277\n"); - end - FInput1E = 64'h11EC498900000000; - FInput2E = 64'hABE0DE0 00000000; - FInput3E = 64'h7FA789C500000000; - ans = 64'h50B5C1 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3282278\n"); - end - FInput1E = 64'hC4DFFFFF00000000; - FInput2E = 64'hFF80FFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3283279\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h004001 C00000000; - flags = 5'hD6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D6 "); - $fwrite(fp,"3284280\n"); - end - FInput1E = 64'h426FFFF800000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE E00000000; - flags = 5'h97; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"97 "); - $fwrite(fp,"3285281\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF400000000000000; - ans = 64'h040800 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3286282\n"); - end - FInput1E = 64'h0C5FFFFF00000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h5CE0000000000000; - ans = 64'h00007F 400000000; - flags = 5'hC3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C3 "); - $fwrite(fp,"3287283\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3288284\n"); - end - FInput1E = 64'hFFD0004000000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFF8010 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3289285\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3290286\n"); - end - FInput1E = 64'h401FF80000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h000007FF00000000; - ans = 64'h000000 B00000000; - flags = 5'h07; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"07 "); - $fwrite(fp,"3291287\n"); - end - FInput1E = 64'hBF1007FF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3292288\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8150AAC000000000; - ans = 64'h11CC7D 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3293289\n"); - end - FInput1E = 64'h3EBFFFFF00000000; - FInput2E = 64'h5FFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3294290\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h588000FF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3295291\n"); - end - FInput1E = 64'hBE7FFFFF00000000; - FInput2E = 64'hC0007FE 00000000; - FInput3E = 64'h1FF219E200000000; - ans = 64'hA95EC5 400000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"3296292\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3297293\n"); - end - FInput1E = 64'hA962DF1F00000000; - FInput2E = 64'h79BF23E 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h01FE00 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3298294\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3299295\n"); - end - FInput1E = 64'hC1EFFFFF00000000; - FInput2E = 64'hFF83FFE 00000000; - FInput3E = 64'h01967CF800000000; - ans = 64'h437796 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3300296\n"); - end - FInput1E = 64'hBFEEFFFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3301297\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h75007FFF00000000; - ans = 64'hFFFFFE 500000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"3302298\n"); - end - FInput1E = 64'hBF9FFFFF00000000; - FInput2E = 64'hFFFFEF7 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"3303299\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0234AFA300000000; - ans = 64'h95B43B F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3304300\n"); - end - FInput1E = 64'h7FF000FF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h2BF7FC0000000000; - ans = 64'h000000 C00000000; - flags = 5'h4A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4A "); - $fwrite(fp,"3305301\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3306302\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h7E00000D00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3307303\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3308304\n"); - end - FInput1E = 64'h3CAFFDFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h3F497F8E00000000; - ans = 64'h542873 C00000000; - flags = 5'h35; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"35 "); - $fwrite(fp,"3309305\n"); - end - FInput1E = 64'h3FC0008000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3310306\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD3FFFFF00000000; - ans = 64'hFBFFFF C00000000; - flags = 5'h65; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65 "); - $fwrite(fp,"3311307\n"); - end - FInput1E = 64'h41D08F5000000000; - FInput2E = 64'h5BA7E6D 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3312308\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB604AF400000000; - ans = 64'hA22E07 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3313309\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'hEAF8002000000000; - ans = 64'h000000 C00000000; - flags = 5'h3B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3B "); - $fwrite(fp,"3314310\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3315311\n"); - end - FInput1E = 64'h40301F7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h020000FF00000000; - ans = 64'hBFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3316312\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'h4A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4A "); - $fwrite(fp,"3317313\n"); - end - FInput1E = 64'h480EFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h0000006F00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3318314\n"); - end - FInput1E = 64'h311FFFFF00000000; - FInput2E = 64'hFFFFF5F 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3319315\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFE000000000; - ans = 64'h000020 C00000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"3320316\n"); - end - FInput1E = 64'hB2B003FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3321317\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hA8FFFEFF00000000; - ans = 64'hFFFDFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3322318\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'h7FFFFFB 00000000; - FInput3E = 64'h12B5B82F00000000; - ans = 64'hE63F4C C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3323319\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3324320\n"); - end - FInput1E = 64'hB7E19CBC00000000; - FInput2E = 64'h3F41F2E 00000000; - FInput3E = 64'hF9FF7FFF00000000; - ans = 64'hF7FFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3325321\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3326322\n"); - end - FInput1E = 64'hAF8FFFFF00000000; - FInput2E = 64'hFFFF800 00000000; - FInput3E = 64'h3EF7098900000000; - ans = 64'h3E9581 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3327323\n"); - end - FInput1E = 64'h3FDFD52A00000000; - FInput2E = 64'h02DF001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3328324\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hC4FFC00000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h17; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"17 "); - $fwrite(fp,"3329325\n"); - end - FInput1E = 64'hC1C1069E00000000; - FInput2E = 64'hC66263F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3330326\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200004000000000; - ans = 64'h000000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3331327\n"); - end - FInput1E = 64'hC1C0000800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hF8001F 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3332328\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3333329\n"); - end - FInput1E = 64'h3F00000000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hFA0007FF00000000; - ans = 64'hFFFFBE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3334330\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3335331\n"); - end - FInput1E = 64'h3FD965E000000000; - FInput2E = 64'hC031CD6 00000000; - FInput3E = 64'h1E7FFFFF00000000; - ans = 64'hFFFDFF C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3336332\n"); - end - FInput1E = 64'hDFE0000000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3337333\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF5801FFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3338334\n"); - end - FInput1E = 64'hC1F7960E00000000; - FInput2E = 64'h5F76253 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3339335\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E64A32B00000000; - ans = 64'h7705D0 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3340336\n"); - end - FInput1E = 64'h2A203FFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFF7FFF 300000000; - flags = 5'hDC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DC "); - $fwrite(fp,"3341337\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3342338\n"); - end - FInput1E = 64'hC01FFFFE00000000; - FInput2E = 64'hFFFF000 00000000; - FInput3E = 64'h030001FF00000000; - ans = 64'hFFFFF8 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3343339\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3344340\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFDFDFFE 00000000; - FInput3E = 64'h0A00000800000000; - ans = 64'h0001FF 400000000; - flags = 5'hF4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F4 "); - $fwrite(fp,"3345341\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h07FDFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3346342\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000003 C00000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"3347343\n"); - end - FInput1E = 64'hC0FC001F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3348344\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00001000000000; - ans = 64'h010000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3349345\n"); - end - FInput1E = 64'h43EEFF7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F01FFFF00000000; - ans = 64'hDFFFFE A00000000; - flags = 5'hBD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BD "); - $fwrite(fp,"3350346\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3351347\n"); - end - FInput1E = 64'hC80FFC0000000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'h3F130A8A00000000; - ans = 64'h81E374 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3352348\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3353349\n"); - end - FInput1E = 64'hB7F007FF00000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'h18F7FFFF00000000; - ans = 64'hFFFFFD C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3354350\n"); - end - FInput1E = 64'h2AAFFFFF00000000; - FInput2E = 64'hFFFFF00 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3355351\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFB00100000000000; - ans = 64'h07FFFF 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3356352\n"); - end - FInput1E = 64'h5E6FFFFF00000000; - FInput2E = 64'hFFBFDFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3357353\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h030A0D4100000000; - ans = 64'h1FB2FC 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3358354\n"); - end - FInput1E = 64'h404A15DC00000000; - FInput2E = 64'hDCCD514 00000000; - FInput3E = 64'h01DD046200000000; - ans = 64'hB45C1C C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3359355\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3360356\n"); - end - FInput1E = 64'h393FFFFF00000000; - FInput2E = 64'hE0000FE 00000000; - FInput3E = 64'hD200000000000000; - ans = 64'h000F7F C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3361357\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3362358\n"); - end - FInput1E = 64'h3FCF000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h07FFFE 800000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"3363359\n"); - end - FInput1E = 64'hC3DFFFF000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3364360\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000300000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h6E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6E "); - $fwrite(fp,"3365361\n"); - end - FInput1E = 64'h40A0080000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3366362\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0007FFFF00000000; - ans = 64'hFFFFFB 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3367363\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0040080 00000000; - FInput3E = 64'h28F4962600000000; - ans = 64'h8728DB 300000000; - flags = 5'hD2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D2 "); - $fwrite(fp,"3368364\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3369365\n"); - end - FInput1E = 64'h3D8DFFE000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h5DFFDFFF00000000; - ans = 64'hFFF7FF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3370366\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3371367\n"); - end - FInput1E = 64'h37E0000000000000; - FInput2E = 64'h200003E 00000000; - FInput3E = 64'h0100000100000000; - ans = 64'h0FFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3372368\n"); - end - FInput1E = 64'hBFAEE9E600000000; - FInput2E = 64'h4F46427 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3373369\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFFFF80 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3374370\n"); - end - FInput1E = 64'hC3EF000000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h55; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"55 "); - $fwrite(fp,"3375371\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFB6DA28700000000; - ans = 64'hBC5B52 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3376372\n"); - end - FInput1E = 64'hC0003FC000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0200040000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0D "); - $fwrite(fp,"3377373\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3378374\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFC0003E 00000000; - FInput3E = 64'h3DFF000000000000; - ans = 64'h00FFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3379375\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"3380376\n"); - end - FInput1E = 64'hB810100000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h020CF9C700000000; - ans = 64'hE275BF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3381377\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFFBFFFC 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3382378\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6F03FFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3383379\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h00021FF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"3384380\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03FFFFE000000000; - ans = 64'h0001FF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3385381\n"); - end - FInput1E = 64'h3ADFDFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFB00100000000000; - ans = 64'h00007F 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3386382\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3387383\n"); - end - FInput1E = 64'h2EFFFFFF00000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h01DC021000000000; - ans = 64'hFC0082 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3388384\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3389385\n"); - end - FInput1E = 64'h43D269DD00000000; - FInput2E = 64'h513D830 00000000; - FInput3E = 64'h5400010000000000; - ans = 64'h000010 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3390386\n"); - end - FInput1E = 64'hD29A7B5100000000; - FInput2E = 64'h8343873 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3391387\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE01000000000000; - ans = 64'h007FFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3392388\n"); - end - FInput1E = 64'hC0323BE000000000; - FInput2E = 64'h28F2563 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 A00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3393389\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3600000000000000; - ans = 64'h00003F 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3394390\n"); - end - FInput1E = 64'h4800800100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34D7D16300000000; - ans = 64'hC091E8 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3395391\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3396392\n"); - end - FInput1E = 64'hA080040000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'h6C09305600000000; - ans = 64'h3C9D7F 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3397393\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"3398394\n"); - end - FInput1E = 64'h3FBFFFC000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'hFF4603C600000000; - ans = 64'h3AEF90 C00000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"3399395\n"); - end - FInput1E = 64'h2D88079B00000000; - FInput2E = 64'hFD6E5D3 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3400396\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3E00400000000000; - ans = 64'h000000 800000000; - flags = 5'h25; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"25 "); - $fwrite(fp,"3401397\n"); - end - FInput1E = 64'hC80FFFFF00000000; - FInput2E = 64'hFC08000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3402398\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFDFFF00000000; - ans = 64'hFFE000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3403399\n"); - end - FInput1E = 64'h4B40040000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3404400\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3405401\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hDF7FFFE 00000000; - FInput3E = 64'h6700001000000000; - ans = 64'h00FFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3406402\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3407403\n"); - end - FInput1E = 64'h9339BB7200000000; - FInput2E = 64'hA694619 00000000; - FInput3E = 64'h0000001F00000000; - ans = 64'hFDFFFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3408404\n"); - end - FInput1E = 64'h4014E5E800000000; - FInput2E = 64'hCE3564E 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3409405\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0278591200000000; - ans = 64'hFF7305 B00000000; - flags = 5'hAA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AA "); - $fwrite(fp,"3410406\n"); - end - FInput1E = 64'h43E0003F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"3411407\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h000076 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3412408\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0801FFF 00000000; - FInput3E = 64'h0100080000000000; - ans = 64'h040000 C00000000; - flags = 5'hDC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DC "); - $fwrite(fp,"3413409\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3414410\n"); - end - FInput1E = 64'h3408000000000000; - FInput2E = 64'h7FFFFFE 00000000; - FInput3E = 64'h07808FFF00000000; - ans = 64'h7E629F 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3415411\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"3416412\n"); - end - FInput1E = 64'hB86FFFFF00000000; - FInput2E = 64'hFFFF002 00000000; - FInput3E = 64'h00FFF7FF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DD "); - $fwrite(fp,"3417413\n"); - end - FInput1E = 64'h3FC9A78700000000; - FInput2E = 64'h03BE940 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3418414\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7EFFFC0000000000; - ans = 64'h000100 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3419415\n"); - end - FInput1E = 64'h3FBF800000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3420416\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h00200E B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3421417\n"); - end - FInput1E = 64'h800A51B300000000; - FInput2E = 64'h571783B 00000000; - FInput3E = 64'h09FFFFFF00000000; - ans = 64'h00FFFF C00000000; - flags = 5'h7E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7E "); - $fwrite(fp,"3422418\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3423419\n"); - end - FInput1E = 64'h8960000000000000; - FInput2E = 64'h01FFFF6 00000000; - FInput3E = 64'hE800000400000000; - ans = 64'h0001FF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3424420\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3425421\n"); - end - FInput1E = 64'h3FCFFEFF00000000; - FInput2E = 64'hFFE0000 00000000; - FInput3E = 64'hFC00007F00000000; - ans = 64'hFFDFFF 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3426422\n"); - end - FInput1E = 64'hBCADE32100000000; - FInput2E = 64'h765381A 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3427423\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB200FFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3428424\n"); - end - FInput1E = 64'h8028D0DE00000000; - FInput2E = 64'h8133823 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3429425\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0001FE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3430426\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'hC000007 00000000; - FInput3E = 64'h8900007E00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"3431427\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3432428\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'h3FFFFF7 00000000; - FInput3E = 64'h9EA1606700000000; - ans = 64'h2C912F C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3433429\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3434430\n"); - end - FInput1E = 64'hC2C4000000000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'hC26CBC1C00000000; - ans = 64'h557504 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3435431\n"); - end - FInput1E = 64'h3E3B1AA500000000; - FInput2E = 64'h8F3BAFB 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3436432\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h6CFFFFFF00000000; - ans = 64'hFFFBFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3437433\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h000003C 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"3438434\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h975A307400000000; - ans = 64'h7AF85B 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3439435\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFF7BF 00000000; - FInput3E = 64'h003FE00000000000; - ans = 64'h000000 C00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3440436\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3441437\n"); - end - FInput1E = 64'h3FF0000100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000300000000; - ans = 64'hFFFBFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3442438\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3443439\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'hFFFEFE0 00000000; - FInput3E = 64'h0E00000000000000; - ans = 64'h011FFF 700000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3444440\n"); - end - FInput1E = 64'h9E8FFFFE00000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3445441\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000007F00000000; - ans = 64'hFFFDFF 400000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"3446442\n"); - end - FInput1E = 64'h37F4BAE700000000; - FInput2E = 64'hE6F948B 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 500000000; - flags = 5'hBD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BD "); - $fwrite(fp,"3447443\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF10000F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3448444\n"); - end - FInput1E = 64'h3924FB4000000000; - FInput2E = 64'h5022969 00000000; - FInput3E = 64'h019A760100000000; - ans = 64'h93A4B3 300000000; - flags = 5'hBE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BE "); - $fwrite(fp,"3449445\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3450446\n"); - end - FInput1E = 64'h75EFFFFF00000000; - FInput2E = 64'h07FFFFE 00000000; - FInput3E = 64'hB4EFFFFF00000000; - ans = 64'hFFFFBE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3451447\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF D00000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"3452448\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFD000 00000000; - FInput3E = 64'h01DB9E4D00000000; - ans = 64'hF2524D 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3453449\n"); - end - FInput1E = 64'h37F0800000000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3454450\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'h0001FF B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3455451\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3456452\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'h000100 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3457453\n"); - end - FInput1E = 64'h5501DAD200000000; - FInput2E = 64'h332DBC7 00000000; - FInput3E = 64'h0010007F00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3458454\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3459455\n"); - end - FInput1E = 64'h34AFFFFF00000000; - FInput2E = 64'hFF40000 00000000; - FInput3E = 64'h020003FF00000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3460456\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 600000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"3461457\n"); - end - FInput1E = 64'hB7EF800700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4700001000000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3462458\n"); - end - FInput1E = 64'hC01FFFC000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3463459\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFF800000000000; - ans = 64'h000001 C00000000; - flags = 5'h0C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0C "); - $fwrite(fp,"3464460\n"); - end - FInput1E = 64'h3B4DF80000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3465461\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB00000300000000; - ans = 64'h800000 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3466462\n"); - end - FInput1E = 64'h20D0000000000000; - FInput2E = 64'h0017FFE 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hCFFFFE 300000000; - flags = 5'h0D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0D "); - $fwrite(fp,"3467463\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3468464\n"); - end - FInput1E = 64'h4800000700000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'h3D00800000000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3469465\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h12; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12 "); - $fwrite(fp,"3470466\n"); - end - FInput1E = 64'hBFD4BB4600000000; - FInput2E = 64'h5E2F646 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000027 A00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3471467\n"); - end - FInput1E = 64'h41DB6D2200000000; - FInput2E = 64'h2BB0DDE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3472468\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hDA0003FF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3473469\n"); - end - FInput1E = 64'h3FD1000000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hCD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CD "); - $fwrite(fp,"3474470\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7EBCE48800000000; - ans = 64'h4DA9FF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3475471\n"); - end - FInput1E = 64'h4130000000000000; - FInput2E = 64'h000001C 00000000; - FInput3E = 64'h7E2000FF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3476472\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3477473\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'hFFFFC02 00000000; - FInput3E = 64'h80FBFFFF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3478474\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 000000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3479475\n"); - end - FInput1E = 64'h3FEFFE8000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFF000000000000; - ans = 64'h000FFF 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3480476\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFF3FF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3481477\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02F0000F00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3482478\n"); - end - FInput1E = 64'h97D2890D00000000; - FInput2E = 64'hBD28050 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3483479\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3FFFFFFF00000000; - ans = 64'hF7FFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3484480\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'h83FFFFF 00000000; - FInput3E = 64'hFD00007F00000000; - ans = 64'hFFFFFC 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3485481\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3486482\n"); - end - FInput1E = 64'hB80DC00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF8201C2800000000; - ans = 64'h4DCB24 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3487483\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3488484\n"); - end - FInput1E = 64'hC3D001FF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'hFF7FFA B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3489485\n"); - end - FInput1E = 64'hC0E00FFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3490486\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCCFFFFFF00000000; - ans = 64'hF7C000 000000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"3491487\n"); - end - FInput1E = 64'hBFBFDFFF00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'h53; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"53 "); - $fwrite(fp,"3492488\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1DD8627F00000000; - ans = 64'h14CC9D 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3493489\n"); - end - FInput1E = 64'hC3CEFFFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'h6E04000000000000; - ans = 64'h000000 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3494490\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3495491\n"); - end - FInput1E = 64'h3EDFFDFF00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'h7FA7D69800000000; - ans = 64'hD5DD43 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3496492\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"3497493\n"); - end - FInput1E = 64'hC02F01FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0580000000000000; - ans = 64'h000FFF 400000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3498494\n"); - end - FInput1E = 64'hDC2FFFB700000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3499495\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFC00000000000; - ans = 64'h00000F 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3500496\n"); - end - FInput1E = 64'hBF46FFCF00000000; - FInput2E = 64'h6810B6E 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"3501497\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFC0000A000000000; - ans = 64'h000000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3502498\n"); - end - FInput1E = 64'h4300000000000000; - FInput2E = 64'h000800F 00000000; - FInput3E = 64'h3400000300000000; - ans = 64'hFFFFFE 000000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3503499\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3504500\n"); - end - FInput1E = 64'hC47FFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h32FFFFFF00000000; - ans = 64'hFC4000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3505501\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3506502\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFF7FE A00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3507503\n"); - end - FInput1E = 64'h8009902800000000; - FInput2E = 64'hA8BC39E 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3508504\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB00007FF00000000; - ans = 64'h000000 B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3509505\n"); - end - FInput1E = 64'hBFD8E1AD00000000; - FInput2E = 64'hB807737 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3510506\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00F8001000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3511507\n"); - end - FInput1E = 64'h41DFFC0000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h047FFFFF00000000; - ans = 64'hFF7FFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3512508\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3513509\n"); - end - FInput1E = 64'hC3DFFFFF00000000; - FInput2E = 64'hFF00000 00000000; - FInput3E = 64'h1E1FFFFF00000000; - ans = 64'hF00000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3514510\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3515511\n"); - end - FInput1E = 64'hBFFFFFFE00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h7EFFFE0000000000; - ans = 64'h0000FE B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3516512\n"); - end - FInput1E = 64'h0C2FFFFF00000000; - FInput2E = 64'hFFFF81F 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3517513\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hDFFFEF C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"3518514\n"); - end - FInput1E = 64'hC1CD416400000000; - FInput2E = 64'h238B450 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3519515\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E00000100000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3520516\n"); - end - FInput1E = 64'hC1D63F4C00000000; - FInput2E = 64'h09CF17D 00000000; - FInput3E = 64'h0038665300000000; - ans = 64'hE94E7E C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3521517\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3522518\n"); - end - FInput1E = 64'hC080000000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'h85FFFFF800000000; - ans = 64'h00003E 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3523519\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3524520\n"); - end - FInput1E = 64'h480E746200000000; - FInput2E = 64'h4B0DF35 00000000; - FInput3E = 64'h02204CCB00000000; - ans = 64'h5CD31F E00000000; - flags = 5'hAA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AA "); - $fwrite(fp,"3525521\n"); - end - FInput1E = 64'h4717170800000000; - FInput2E = 64'h6B26DF2 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3526522\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hC001FF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3527523\n"); - end - FInput1E = 64'h3FD0020100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3528524\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000007F00000000; - ans = 64'hFFC000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3529525\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h42FFDF8000000000; - ans = 64'h000000 400000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"3530526\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3531527\n"); - end - FInput1E = 64'h7FFAA73900000000; - FInput2E = 64'h32308BE 00000000; - FInput3E = 64'hF0E85F6600000000; - ans = 64'hF9A590 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3532528\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3533529\n"); - end - FInput1E = 64'hC3EFFFE000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h00400F C00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"3534530\n"); - end - FInput1E = 64'h410FFFFF00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3535531\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFE000000000; - ans = 64'h100000 D00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3536532\n"); - end - FInput1E = 64'hF140000700000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3537533\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1F00000200000000; - ans = 64'h0007FE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3538534\n"); - end - FInput1E = 64'h5E7000FF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h01FFFF7F00000000; - ans = 64'hFFFFBF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3539535\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3540536\n"); - end - FInput1E = 64'hC52C42E600000000; - FInput2E = 64'hBCCAFB1 00000000; - FInput3E = 64'hE4CD9F6500000000; - ans = 64'h78AADF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3541537\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'hF2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F2 "); - $fwrite(fp,"3542538\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'hFEFFDFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h03FBFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3543539\n"); - end - FInput1E = 64'h4030400000000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3544540\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000100000000; - ans = 64'hFFFBFF 400000000; - flags = 5'h6B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6B "); - $fwrite(fp,"3545541\n"); - end - FInput1E = 64'hB93C93AA00000000; - FInput2E = 64'h764019C 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h45; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"45 "); - $fwrite(fp,"3546542\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E88330A00000000; - ans = 64'hB2BEDC B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3547543\n"); - end - FInput1E = 64'h342C89D400000000; - FInput2E = 64'h2188302 00000000; - FInput3E = 64'hF2783FEA00000000; - ans = 64'h3CCC7C C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3548544\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3549545\n"); - end - FInput1E = 64'hC1F88E7700000000; - FInput2E = 64'hDEE668E 00000000; - FInput3E = 64'h7EFFFFFF00000000; - ans = 64'hFC0080 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3550546\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3551547\n"); - end - FInput1E = 64'hC80EA79200000000; - FInput2E = 64'hC438451 00000000; - FInput3E = 64'hFE00800000000000; - ans = 64'h00007E 400000000; - flags = 5'h41; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41 "); - $fwrite(fp,"3552548\n"); - end - FInput1E = 64'h4F000FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3553549\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE5D076200000000; - ans = 64'h6340C0 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3554550\n"); - end - FInput1E = 64'h4098D20D00000000; - FInput2E = 64'h49B8DC4 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3555551\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFC0000000000; - ans = 64'h001FFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3556552\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFBFFF7F 00000000; - FInput3E = 64'h03004FFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3557553\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3558554\n"); - end - FInput1E = 64'h4347363000000000; - FInput2E = 64'h1539C16 00000000; - FInput3E = 64'h8180000100000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3559555\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3560556\n"); - end - FInput1E = 64'hBCA9523400000000; - FInput2E = 64'h4DF68A5 00000000; - FInput3E = 64'hFD0EDC8700000000; - ans = 64'h598C46 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3561557\n"); - end - FInput1E = 64'h41C0040000000000; - FInput2E = 64'h0000FFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3562558\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8121FFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3563559\n"); - end - FInput1E = 64'hBD3D85FE00000000; - FInput2E = 64'h9218660 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 000000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3564560\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03260D7A00000000; - ans = 64'h2FBDAC 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3565561\n"); - end - FInput1E = 64'h7FD0000300000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hFEFFDFFF00000000; - ans = 64'hFFFFF8 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3566562\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3567563\n"); - end - FInput1E = 64'h4070020000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'h6FC0000000000000; - ans = 64'h0003FE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3568564\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3569565\n"); - end - FInput1E = 64'hB7FFDFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E20000000000000; - ans = 64'h00000E 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3570566\n"); - end - FInput1E = 64'h3FE6AAFA00000000; - FInput2E = 64'hE792414 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3571567\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDDFFFFF00000000; - ans = 64'h800000 B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3572568\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFF00040 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3573569\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EFDFFFD00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3574570\n"); - end - FInput1E = 64'h38207FFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hFB0103FF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3575571\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3576572\n"); - end - FInput1E = 64'hB5FB26C600000000; - FInput2E = 64'h0832C47 00000000; - FInput3E = 64'hA501000000000000; - ans = 64'h00000E B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3577573\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"3578574\n"); - end - FInput1E = 64'hBFC0000200000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'hFEF0000000000000; - ans = 64'h000002 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3579575\n"); - end - FInput1E = 64'hA464080000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3580576\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hFFFDFF C00000000; - flags = 5'h41; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"41 "); - $fwrite(fp,"3581577\n"); - end - FInput1E = 64'h38003FFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3582578\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB9E754000000000; - ans = 64'h9C7C2A 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3583579\n"); - end - FInput1E = 64'h930FFFFD00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h003FEF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3584580\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3585581\n"); - end - FInput1E = 64'h37E8F35400000000; - FInput2E = 64'h2659276 00000000; - FInput3E = 64'h02FEEFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3586582\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h9B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9B "); - $fwrite(fp,"3587583\n"); - end - FInput1E = 64'hC0E5D5B000000000; - FInput2E = 64'h2CA3D5E 00000000; - FInput3E = 64'hEDF0000000000000; - ans = 64'h07FFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3588584\n"); - end - FInput1E = 64'h5462700D00000000; - FInput2E = 64'hC3DAD89 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3589585\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFBFF000F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3590586\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h06; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"06 "); - $fwrite(fp,"3591587\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h54FFEC0000000000; - ans = 64'h000000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3592588\n"); - end - FInput1E = 64'h371FFFFE00000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'hFF3CA66C00000000; - ans = 64'h270FA6 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3593589\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3594590\n"); - end - FInput1E = 64'hD9CFDFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000FFA 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3595591\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3596592\n"); - end - FInput1E = 64'hC99FFFFF00000000; - FInput2E = 64'hC07FFFE 00000000; - FInput3E = 64'h0301FEFF00000000; - ans = 64'hFFFFFF 200000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3597593\n"); - end - FInput1E = 64'h420FFFFF00000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3598594\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1EFFF00000000000; - ans = 64'h000200 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3599595\n"); - end - FInput1E = 64'h40C0000000000000; - FInput2E = 64'h2000FFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3600596\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h56FFFF7C00000000; - ans = 64'h000000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3601597\n"); - end - FInput1E = 64'h801FFFFB00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h8797919000000000; - ans = 64'h8CC5B2 400000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"3602598\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3603599\n"); - end - FInput1E = 64'hC1EB84A600000000; - FInput2E = 64'h86E27BF 00000000; - FInput3E = 64'h6FFFFFFF00000000; - ans = 64'h0003FF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3604600\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE A00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"3605601\n"); - end - FInput1E = 64'hC05FFFFF00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'hFE03FFFF00000000; - ans = 64'hBFFFFE F00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"3606602\n"); - end - FInput1E = 64'h3E8A1C0D00000000; - FInput2E = 64'h8D28AB3 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3607603\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8C00002000000000; - ans = 64'h01FFFF 800000000; - flags = 5'h1E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1E "); - $fwrite(fp,"3608604\n"); - end - FInput1E = 64'h401EB33D00000000; - FInput2E = 64'h04D630D 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 200000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"3609605\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF9FFFFF700000000; - ans = 64'hC00000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3610606\n"); - end - FInput1E = 64'hC00FFFDF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hFE0080 B00000000; - flags = 5'h8B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8B "); - $fwrite(fp,"3611607\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3612608\n"); - end - FInput1E = 64'h43F0008000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h02ED056200000000; - ans = 64'h7DDDD2 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3613609\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h09; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"09 "); - $fwrite(fp,"3614610\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'hFFFF400 00000000; - FInput3E = 64'h55FFFFFF00000000; - ans = 64'hFFFFF2 000000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"3615611\n"); - end - FInput1E = 64'hC03000FF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3616612\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h010007FF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3617613\n"); - end - FInput1E = 64'h3CAF00FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3618614\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000100000000; - ans = 64'hFFFFF0 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3619615\n"); - end - FInput1E = 64'hBCAFFFFE00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'hFFC00E 400000000; - flags = 5'h2E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2E "); - $fwrite(fp,"3620616\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3621617\n"); - end - FInput1E = 64'hBF8FE00000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h020101FF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3622618\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3623619\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h040FFFF 00000000; - FInput3E = 64'hFF67BEF400000000; - ans = 64'h0554E4 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3624620\n"); - end - FInput1E = 64'hBFB3FF7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3625621\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h81FFFFFF00000000; - ans = 64'hF801FF 400000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"3626622\n"); - end - FInput1E = 64'h3FF0001000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3627623\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE3FFFFFF00000000; - ans = 64'h00FFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3628624\n"); - end - FInput1E = 64'h3FEF66DD00000000; - FInput2E = 64'h5150252 00000000; - FInput3E = 64'h8000000700000000; - ans = 64'hFFFDFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3629625\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3630626\n"); - end - FInput1E = 64'h38C000FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hAD22000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3631627\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h54; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"54 "); - $fwrite(fp,"3632628\n"); - end - FInput1E = 64'hBFC910A000000000; - FInput2E = 64'h996ABE5 00000000; - FInput3E = 64'hE8FFF7BF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h85; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"85 "); - $fwrite(fp,"3633629\n"); - end - FInput1E = 64'h41A0000000000000; - FInput2E = 64'h4000200 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3634630\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE60001FF00000000; - ans = 64'hFE0000 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3635631\n"); - end - FInput1E = 64'h5FB0000000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3636632\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hF7FDFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3637633\n"); - end - FInput1E = 64'hBFEFDEFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3DC0000700000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3638634\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3639635\n"); - end - FInput1E = 64'hB80FFFFE00000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'hFBEE327C00000000; - ans = 64'h1C3578 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3640636\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hB1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B1 "); - $fwrite(fp,"3641637\n"); - end - FInput1E = 64'hC3FD46DC00000000; - FInput2E = 64'hA032B72 00000000; - FInput3E = 64'h6200002000000000; - ans = 64'h0003FF C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3642638\n"); - end - FInput1E = 64'hC015D01E00000000; - FInput2E = 64'hF7EC1B7 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3643639\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFB7DDDD100000000; - ans = 64'hE24AC7 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3644640\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"3645641\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hBFFFDF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3646642\n"); - end - FInput1E = 64'h3FEF7FFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h008008 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3647643\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3648644\n"); - end - FInput1E = 64'hC06FFC0000000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h04FFDFF700000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3649645\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3650646\n"); - end - FInput1E = 64'h4000007F00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEA3F7FFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"3651647\n"); - end - FInput1E = 64'h0005F43900000000; - FInput2E = 64'h9DF7062 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3652648\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hA7FFFF7F00000000; - ans = 64'hFFEFFF 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3653649\n"); - end - FInput1E = 64'hBFE0002000000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 300000000; - flags = 5'h77; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"77 "); - $fwrite(fp,"3654650\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFBFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3655651\n"); - end - FInput1E = 64'hBC1FE00000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h3FFE00 000000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3656652\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3657653\n"); - end - FInput1E = 64'h37EAC8FF00000000; - FInput2E = 64'h86648D2 00000000; - FInput3E = 64'hFCFBFFFF00000000; - ans = 64'hEFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3658654\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3659655\n"); - end - FInput1E = 64'h4030000000000000; - FInput2E = 64'h0010001 00000000; - FInput3E = 64'hFD00FFFF00000000; - ans = 64'hFFFF7F C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3660656\n"); - end - FInput1E = 64'hC091045F00000000; - FInput2E = 64'h1CFDC67 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3661657\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0102000000000000; - ans = 64'h010000 300000000; - flags = 5'h8D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8D "); - $fwrite(fp,"3662658\n"); - end - FInput1E = 64'hBFE02FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 200000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3663659\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h019BE1D500000000; - ans = 64'h88FA4A 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3664660\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F6D800E00000000; - ans = 64'hBB1923 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3665661\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3666662\n"); - end - FInput1E = 64'hBFE0000F00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h010000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3667663\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3668664\n"); - end - FInput1E = 64'h8B8FFFE000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h4A26D3C300000000; - ans = 64'hA42C4A C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3669665\n"); - end - FInput1E = 64'hC7E1CCFB00000000; - FInput2E = 64'h8A11E7F 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3670666\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hECFFFFFF00000000; - ans = 64'hFE01FF 900000000; - flags = 5'h7D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7D "); - $fwrite(fp,"3671667\n"); - end - FInput1E = 64'h480E07FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3672668\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFEFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3673669\n"); - end - FInput1E = 64'h3F4BFF0000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h9EFFFFFF00000000; - ans = 64'hBFFFFB 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3674670\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3675671\n"); - end - FInput1E = 64'hC000772000000000; - FInput2E = 64'h2F8FA8B 00000000; - FInput3E = 64'h008FACC700000000; - ans = 64'hDDF91F B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3676672\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E6 "); - $fwrite(fp,"3677673\n"); - end - FInput1E = 64'h780FFBF800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h23003FFF00000000; - ans = 64'hFEFFFE C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3678674\n"); - end - FInput1E = 64'h41F0A29700000000; - FInput2E = 64'h0A0A920 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3679675\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1F759CBB00000000; - ans = 64'hDFAB49 B00000000; - flags = 5'hA1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A1 "); - $fwrite(fp,"3680676\n"); - end - FInput1E = 64'h42C9F7BB00000000; - FInput2E = 64'hD642AEB 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3681677\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF0003C000000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3682678\n"); - end - FInput1E = 64'h304F000000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h0B0FFFFF00000000; - ans = 64'hDFFFFF 300000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3683679\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3684680\n"); - end - FInput1E = 64'h41DFFFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h2810000000000000; - ans = 64'h0FFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3685681\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3686682\n"); - end - FInput1E = 64'h47F0003F00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h2800000000000000; - ans = 64'h7FFFFF C00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3687683\n"); - end - FInput1E = 64'h37F3915100000000; - FInput2E = 64'hBC5515C 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3688684\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h77FFFFFF00000000; - ans = 64'hDFFFFF C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3689685\n"); - end - FInput1E = 64'hC0BFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hF1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F1 "); - $fwrite(fp,"3690686\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE3E3EFF00000000; - ans = 64'hC290B2 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3691687\n"); - end - FInput1E = 64'hC7AFFFF700000000; - FInput2E = 64'hFFFDFFE 00000000; - FInput3E = 64'hE4FFFFBF00000000; - ans = 64'hEFFFFF 200000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3692688\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3693689\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h8000100 00000000; - FInput3E = 64'hFC00BFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3694690\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3695691\n"); - end - FInput1E = 64'hBF9001FF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hF00000 B00000000; - flags = 5'h16; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"16 "); - $fwrite(fp,"3696692\n"); - end - FInput1E = 64'hC3C0000000000000; - FInput2E = 64'h6FFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3697693\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400010000000000; - ans = 64'h0000FE B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3698694\n"); - end - FInput1E = 64'h47FFFFBF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3699695\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h67003FFE00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3700696\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h00001F6 00000000; - FInput3E = 64'hBDFFFFFF00000000; - ans = 64'h000001 C00000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3701697\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3702698\n"); - end - FInput1E = 64'h3E107FFF00000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'h3F53A05400000000; - ans = 64'h03FCD9 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3703699\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3704700\n"); - end - FInput1E = 64'hBF07561000000000; - FInput2E = 64'h9D0A8EC 00000000; - FInput3E = 64'h2CFFFFFF00000000; - ans = 64'h001FFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3705701\n"); - end - FInput1E = 64'h07C0002000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3706702\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8EFFC00000000000; - ans = 64'h03FFFF 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3707703\n"); - end - FInput1E = 64'hE59FFFFF00000000; - FInput2E = 64'hC07FFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3708704\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hAB01FFFF00000000; - ans = 64'hFFFDFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3709705\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00400000000000; - ans = 64'h000007 400000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"3710706\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3711707\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'h8008000 00000000; - FInput3E = 64'h0EFFFFFF00000000; - ans = 64'h7FFFF7 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3712708\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h3D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3D "); - $fwrite(fp,"3713709\n"); - end - FInput1E = 64'h47EFFFDF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFCFBFFFF00000000; - ans = 64'hFFFF80 C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3714710\n"); - end - FInput1E = 64'hBFB8105100000000; - FInput2E = 64'h9F3CA79 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3715711\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hAD02001000000000; - ans = 64'h000000 B00000000; - flags = 5'hFE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FE "); - $fwrite(fp,"3716712\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0200000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3717713\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h001007 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3718714\n"); - end - FInput1E = 64'h7FE1868C00000000; - FInput2E = 64'hB076BC1 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h00037F B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3719715\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3720716\n"); - end - FInput1E = 64'h0027DD7300000000; - FInput2E = 64'h814408C 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFDC00 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3721717\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3722718\n"); - end - FInput1E = 64'h4AB1843300000000; - FInput2E = 64'hBF5E148 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h7FFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3723719\n"); - end - FInput1E = 64'h41E03FFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3724720\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h05FFC00000000000; - ans = 64'h00001F 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3725721\n"); - end - FInput1E = 64'hC3FFF9FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3726722\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h80FE000000000000; - ans = 64'h000003 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3727723\n"); - end - FInput1E = 64'h41F1FFFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h00080F C00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3728724\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3729725\n"); - end - FInput1E = 64'h3C53D49100000000; - FInput2E = 64'hCD9D929 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h000006 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3730726\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE E00000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3731727\n"); - end - FInput1E = 64'hC01EFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hF80000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3732728\n"); - end - FInput1E = 64'h3FD0630500000000; - FInput2E = 64'h2F80CEC 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3733729\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFA0027FF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3734730\n"); - end - FInput1E = 64'h41FFFFFF00000000; - FInput2E = 64'hFFFFE02 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3735731\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFB00FFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3736732\n"); - end - FInput1E = 64'h413FFFFF00000000; - FInput2E = 64'hFBDFFFE 00000000; - FInput3E = 64'hFCFEFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3737733\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3738734\n"); - end - FInput1E = 64'hC807FFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h54FFFFF700000000; - ans = 64'hFFFFFC 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3739735\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3740736\n"); - end - FInput1E = 64'h30A0010000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hCA97783000000000; - ans = 64'hF3AC79 200000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3741737\n"); - end - FInput1E = 64'hC3E4C25700000000; - FInput2E = 64'h8096BE9 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3742738\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1D7EFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3743739\n"); - end - FInput1E = 64'h43EBFFBF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3744740\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFE3FFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3745741\n"); - end - FInput1E = 64'hBFAFFFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h3AFFFFFF00000000; - ans = 64'hFFE000 B00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3746742\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3747743\n"); - end - FInput1E = 64'hD60FFFFF00000000; - FInput2E = 64'h8000040 00000000; - FInput3E = 64'h7EFFFF0F00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3748744\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3749745\n"); - end - FInput1E = 64'h3A0980CC00000000; - FInput2E = 64'h88A4F63 00000000; - FInput3E = 64'h8100000200000000; - ans = 64'h001FFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3750746\n"); - end - FInput1E = 64'h40198F7B00000000; - FInput2E = 64'h975032E 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3751747\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC300000400000000; - ans = 64'h100000 B00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"3752748\n"); - end - FInput1E = 64'h43FFD44E00000000; - FInput2E = 64'h5392990 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h64; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"64 "); - $fwrite(fp,"3753749\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00DFFFFF00000000; - ans = 64'hEFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3754750\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h158C867F00000000; - ans = 64'h5E30D7 300000000; - flags = 5'hB9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B9 "); - $fwrite(fp,"3755751\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3756752\n"); - end - FInput1E = 64'hC3DFFFFF00000000; - FInput2E = 64'h0008000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hBFFF7F C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3757753\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 B00000000; - flags = 5'h21; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21 "); - $fwrite(fp,"3758754\n"); - end - FInput1E = 64'h3CC5349E00000000; - FInput2E = 64'hF537C2F 00000000; - FInput3E = 64'h01FFFF9F00000000; - ans = 64'hFFFFFF E00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"3759755\n"); - end - FInput1E = 64'h47FFFFFF00000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3760756\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hE000FF 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3761757\n"); - end - FInput1E = 64'h43F007FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3762758\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h007DB66100000000; - ans = 64'hAEC87D 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3763759\n"); - end - FInput1E = 64'hBF8CC91C00000000; - FInput2E = 64'h9E39D5E 00000000; - FInput3E = 64'h00FFFFF700000000; - ans = 64'hFFEFFE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3764760\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3765761\n"); - end - FInput1E = 64'hFFDEFF7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h000010 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3766762\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3767763\n"); - end - FInput1E = 64'hB81EBDA200000000; - FInput2E = 64'h8A1B708 00000000; - FInput3E = 64'h0200FFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3768764\n"); - end - FInput1E = 64'hF500002000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3769765\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'hDFFFFF C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3770766\n"); - end - FInput1E = 64'h41E1FFF000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3771767\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h35FFF7FF00000000; - ans = 64'h7FFFFE C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3772768\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h000007D 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h5FFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3773769\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3774770\n"); - end - FInput1E = 64'h380FFFFF00000000; - FInput2E = 64'hFFFFF87 00000000; - FInput3E = 64'h80ED478800000000; - ans = 64'hB18961 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3775771\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hF4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F4 "); - $fwrite(fp,"3776772\n"); - end - FInput1E = 64'hBF2FF7FF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hBBFC001F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3777773\n"); - end - FInput1E = 64'h41E42C6200000000; - FInput2E = 64'hE7DD766 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3778774\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1D07ED7B00000000; - ans = 64'h8900BE C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3779775\n"); - end - FInput1E = 64'h8019937900000000; - FInput2E = 64'h437864A 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 400000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"3780776\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h010FFFFF00000000; - ans = 64'hFFF000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3781777\n"); - end - FInput1E = 64'hBFC7FFDF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFC0000000000; - ans = 64'h000007 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3782778\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3783779\n"); - end - FInput1E = 64'h2BFFF80000000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h1D00020000000000; - ans = 64'h00007E F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3784780\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3785781\n"); - end - FInput1E = 64'h3FBFFFFE00000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'h8103FFFF00000000; - ans = 64'hFF0000 B00000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"3786782\n"); - end - FInput1E = 64'h7FFFFDFF00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3787783\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0481C0A400000000; - ans = 64'h2A3304 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3788784\n"); - end - FInput1E = 64'h666FFFFF00000000; - FInput2E = 64'hFFFEF00 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'h1B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1B "); - $fwrite(fp,"3789785\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFDF700000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3790786\n"); - end - FInput1E = 64'h40BEF5FC00000000; - FInput2E = 64'hCF72028 00000000; - FInput3E = 64'h0180000000000000; - ans = 64'h0FFFFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3791787\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3792788\n"); - end - FInput1E = 64'h01F0000800000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h0600000400000000; - ans = 64'h003FFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3793789\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h22; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"22 "); - $fwrite(fp,"3794790\n"); - end - FInput1E = 64'hC484653400000000; - FInput2E = 64'h5BAEA1C 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h040200 C00000000; - flags = 5'h0E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0E "); - $fwrite(fp,"3795791\n"); - end - FInput1E = 64'h47EFFFFB00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3796792\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFF7FBF 400000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"3797793\n"); - end - FInput1E = 64'h8012C3D100000000; - FInput2E = 64'h815F14F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3798794\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD500001F00000000; - ans = 64'hEFFFFE F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3799795\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'hFF7FFFB 00000000; - FInput3E = 64'h34003FFF00000000; - ans = 64'hFEFFFF C00000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"3800796\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3801797\n"); - end - FInput1E = 64'hC08242A000000000; - FInput2E = 64'hAEB8A58 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFFFFD7 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3802798\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 D00000000; - flags = 5'hD8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D8 "); - $fwrite(fp,"3803799\n"); - end - FInput1E = 64'hBFFFBEFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE10000200000000; - ans = 64'h000000 400000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3804800\n"); - end - FInput1E = 64'h40BFFE0000000000; - FInput2E = 64'h0800000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3805801\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF0002FF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3806802\n"); - end - FInput1E = 64'hB160001000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3807803\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00227B0300000000; - ans = 64'h692A16 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3808804\n"); - end - FInput1E = 64'h3ADFF00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hC000FF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3809805\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3810806\n"); - end - FInput1E = 64'h7FEA59F400000000; - FInput2E = 64'hA665EB8 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hBFEFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3811807\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"3812808\n"); - end - FInput1E = 64'h405AC40D00000000; - FInput2E = 64'hE8CD522 00000000; - FInput3E = 64'h3C00001F00000000; - ans = 64'hFFDFFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3813809\n"); - end - FInput1E = 64'h4010008000000000; - FInput2E = 64'h0000800 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3814810\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'hFF9FFF 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3815811\n"); - end - FInput1E = 64'h143FFFF700000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3816812\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0200100000000000; - ans = 64'h0003FE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3817813\n"); - end - FInput1E = 64'hC00FFEFF00000000; - FInput2E = 64'hFF00000 00000000; - FInput3E = 64'h7F00F7FF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3818814\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3819815\n"); - end - FInput1E = 64'hA70FFFC000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'hDE1FFF8000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3820816\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3821817\n"); - end - FInput1E = 64'h47EDFFFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'hF8FFFFFC00000000; - ans = 64'h000400 B00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3822818\n"); - end - FInput1E = 64'h403FFFFF00000000; - FInput2E = 64'h7FFFFBF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3823819\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEF00FFFF00000000; - ans = 64'hFFFFF8 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3824820\n"); - end - FInput1E = 64'h59F7914200000000; - FInput2E = 64'hC337D3B 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3825821\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h55FFFFFF00000000; - ans = 64'hDFFFFB 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3826822\n"); - end - FInput1E = 64'h8005A90E00000000; - FInput2E = 64'h36C6C98 00000000; - FInput3E = 64'h80C9D4CA00000000; - ans = 64'h14A733 C00000000; - flags = 5'hE2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E2 "); - $fwrite(fp,"3827823\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3828824\n"); - end - FInput1E = 64'h3C20001000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h19FFFF7F00000000; - ans = 64'hFE0000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3829825\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3830826\n"); - end - FInput1E = 64'h3F72000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1100010100000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3831827\n"); - end - FInput1E = 64'hB80301E300000000; - FInput2E = 64'h3701167 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3832828\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1EFC000000000000; - ans = 64'h000000 D00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3833829\n"); - end - FInput1E = 64'h37EFFFFF00000000; - FInput2E = 64'hFFFFFC2 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3834830\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF303AEE00000000; - ans = 64'h8A01D1 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3835831\n"); - end - FInput1E = 64'hC0ABC7CF00000000; - FInput2E = 64'hC8701B7 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h0001DF 300000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3836832\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3837833\n"); - end - FInput1E = 64'hBFB9482F00000000; - FInput2E = 64'hDD39044 00000000; - FInput3E = 64'h7710000000000000; - ans = 64'h1FFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3838834\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"3839835\n"); - end - FInput1E = 64'hBCA1FFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFE0000000000; - ans = 64'h0003FF 300000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3840836\n"); - end - FInput1E = 64'h3F87C22A00000000; - FInput2E = 64'h53B4B84 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3841837\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0110000000000000; - ans = 64'h000007 300000000; - flags = 5'h95; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"95 "); - $fwrite(fp,"3842838\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h400000F 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h5B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5B "); - $fwrite(fp,"3843839\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hC3FFFFDF00000000; - ans = 64'hFFFBFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3844840\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h100000F 00000000; - FInput3E = 64'h1C54C55D00000000; - ans = 64'h00AE03 C00000000; - flags = 5'hD9; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D9 "); - $fwrite(fp,"3845841\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3846842\n"); - end - FInput1E = 64'hBCA07F3200000000; - FInput2E = 64'hB1FC623 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'h03FFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3847843\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3848844\n"); - end - FInput1E = 64'h404FFFC000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h010001FF00000000; - ans = 64'hFEFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3849845\n"); - end - FInput1E = 64'hC7FFFFFF00000000; - FInput2E = 64'hF8007FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3850846\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h86FFFFFF00000000; - ans = 64'h00003E F00000000; - flags = 5'h23; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"23 "); - $fwrite(fp,"3851847\n"); - end - FInput1E = 64'h3CAF7FFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3852848\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF9FFFC0000000000; - ans = 64'h000001 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3853849\n"); - end - FInput1E = 64'hFFD0000200000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h030000FF00000000; - ans = 64'hFFF7FF B00000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"3854850\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3855851\n"); - end - FInput1E = 64'hB810080000000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hFEE4959600000000; - ans = 64'hE35FAA C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3856852\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3857853\n"); - end - FInput1E = 64'hB7EFFFFF00000000; - FInput2E = 64'hDFFFEFF 00000000; - FInput3E = 64'h01FFFFFB00000000; - ans = 64'h000000 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3858854\n"); - end - FInput1E = 64'h43B0000000000000; - FInput2E = 64'h004007E 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3859855\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01003FFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3860856\n"); - end - FInput1E = 64'h40291F2700000000; - FInput2E = 64'hE877906 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3861857\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8100000000000000; - ans = 64'h02000F 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3862858\n"); - end - FInput1E = 64'hBD8FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5D58084900000000; - ans = 64'h7BCE44 300000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3863859\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3864860\n"); - end - FInput1E = 64'h3CAFFFFF00000000; - FInput2E = 64'hFF7FFEE 00000000; - FInput3E = 64'hAC6AD21500000000; - ans = 64'hA8F8C9 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3865861\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3866862\n"); - end - FInput1E = 64'hB7F3003A00000000; - FInput2E = 64'h60229BC 00000000; - FInput3E = 64'hFCF8EFE500000000; - ans = 64'hD214BC 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3867863\n"); - end - FInput1E = 64'h4000000100000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3868864\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3E026F2C00000000; - ans = 64'h2D3F98 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3869865\n"); - end - FInput1E = 64'hBFCFEFFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"3870866\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE0001FF00000000; - ans = 64'hFFFFFB C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3871867\n"); - end - FInput1E = 64'h3FC0800000000000; - FInput2E = 64'h07FFFFE 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hBFFFEF 400000000; - flags = 5'hF7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F7 "); - $fwrite(fp,"3872868\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3873869\n"); - end - FInput1E = 64'hADC0000000000000; - FInput2E = 64'h000FFFB 00000000; - FInput3E = 64'h3F01FF7F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3874870\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 200000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3875871\n"); - end - FInput1E = 64'h338FFFFF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h002003 400000000; - flags = 5'hC8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C8 "); - $fwrite(fp,"3876872\n"); - end - FInput1E = 64'h3FBE2F6E00000000; - FInput2E = 64'hB0117FC 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3877873\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF5FFFFFF00000000; - ans = 64'hFC0FFF 300000000; - flags = 5'hED; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"ED "); - $fwrite(fp,"3878874\n"); - end - FInput1E = 64'hC3DFFFFF00000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3879875\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h0001F8 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3880876\n"); - end - FInput1E = 64'h474FFDFF00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h00003F 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3881877\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3882878\n"); - end - FInput1E = 64'hC14454BE00000000; - FInput2E = 64'hACBEA7D 00000000; - FInput3E = 64'h3D72C72200000000; - ans = 64'h115A51 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3883879\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hD1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D1 "); - $fwrite(fp,"3884880\n"); - end - FInput1E = 64'hC0B0000000000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h0160B70200000000; - ans = 64'h735983 B00000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"3885881\n"); - end - FInput1E = 64'h3CADFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3886882\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C00080000000000; - ans = 64'h00007F C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3887883\n"); - end - FInput1E = 64'hC7E0100000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"3888884\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFC0000000000; - ans = 64'h008000 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3889885\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFF3F 00000000; - FInput3E = 64'hC2D39D9800000000; - ans = 64'h911B1B 800000000; - flags = 5'h27; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"27 "); - $fwrite(fp,"3890886\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3891887\n"); - end - FInput1E = 64'hBFCFFFC000000000; - FInput2E = 64'h0000FFE 00000000; - FInput3E = 64'h805DA7C000000000; - ans = 64'h1844FF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3892888\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h87; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"87 "); - $fwrite(fp,"3893889\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'h0001FFC 00000000; - FInput3E = 64'h01B1A50100000000; - ans = 64'h2869DA C00000000; - flags = 5'hFC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FC "); - $fwrite(fp,"3894890\n"); - end - FInput1E = 64'h7FDFFFDF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3895891\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h3FFFEF C00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3896892\n"); - end - FInput1E = 64'h2B1FFFFF00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3897893\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02B2912300000000; - ans = 64'h92F5B4 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3898894\n"); - end - FInput1E = 64'h402FF00000000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'h02FE1FFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h6F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6F "); - $fwrite(fp,"3899895\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3900896\n"); - end - FInput1E = 64'h000D800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F003FFF00000000; - ans = 64'hFFFFE0 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3901897\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3902898\n"); - end - FInput1E = 64'hC1242AE900000000; - FInput2E = 64'hBBEBC26 00000000; - FInput3E = 64'hFD19135100000000; - ans = 64'h6C9BB4 C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3903899\n"); - end - FInput1E = 64'h37E7E4EE00000000; - FInput2E = 64'hAE909C1 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3904900\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFE0000000000; - ans = 64'h000800 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3905901\n"); - end - FInput1E = 64'hC1DFFFC000000000; - FInput2E = 64'h0000200 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'hBC; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BC "); - $fwrite(fp,"3906902\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00002000000000; - ans = 64'h0001FF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3907903\n"); - end - FInput1E = 64'hC1FFC00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h09F6FFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"3908904\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3909905\n"); - end - FInput1E = 64'h40D0003700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h571FFFFF00000000; - ans = 64'hDFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3910906\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3911907\n"); - end - FInput1E = 64'hDD756CAA00000000; - FInput2E = 64'h27AB516 00000000; - FInput3E = 64'hECC0FFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3912908\n"); - end - FInput1E = 64'h3FC0000400000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3913909\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F03FFFF00000000; - ans = 64'hFFBFFF C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3914910\n"); - end - FInput1E = 64'h3CAFFEFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3915911\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E001FFF00000000; - ans = 64'hFFF000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3916912\n"); - end - FInput1E = 64'hFFD9292900000000; - FInput2E = 64'h6B14C7E 00000000; - FInput3E = 64'hF9FFFFFF00000000; - ans = 64'hF80000 400000000; - flags = 5'h33; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"33 "); - $fwrite(fp,"3917913\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3918914\n"); - end - FInput1E = 64'h3CA0000000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'hFFA27A2300000000; - ans = 64'hA5E6CF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3919915\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3920916\n"); - end - FInput1E = 64'h3FC07FF700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E3DFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3921917\n"); - end - FInput1E = 64'h401FF00100000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3922918\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h000003FF00000000; - ans = 64'hBFFFFF 300000000; - flags = 5'h4D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4D "); - $fwrite(fp,"3923919\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'h7FFFFFB 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3924920\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF401FFFF00000000; - ans = 64'hBFFFFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3925921\n"); - end - FInput1E = 64'hC090000000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h5944E8ED00000000; - ans = 64'h5B1401 B00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3926922\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3927923\n"); - end - FInput1E = 64'h09F0000000000000; - FInput2E = 64'h1003FFF 00000000; - FInput3E = 64'h18FFFFFF00000000; - ans = 64'h8001FE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3928924\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3929925\n"); - end - FInput1E = 64'h40007FFF00000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'hFF1618EF00000000; - ans = 64'hEA9809 000000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3930926\n"); - end - FInput1E = 64'h69B001FF00000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3931927\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE82570C00000000; - ans = 64'h599223 B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3932928\n"); - end - FInput1E = 64'h41EFFFDF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h72; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"72 "); - $fwrite(fp,"3933929\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80007FFF00000000; - ans = 64'hEFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"3934930\n"); - end - FInput1E = 64'hA6EFFFFF00000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h7EF8000000000000; - ans = 64'h00007F 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3935931\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3936932\n"); - end - FInput1E = 64'hC3F614E200000000; - FInput2E = 64'h4142B1A 00000000; - FInput3E = 64'hE773764500000000; - ans = 64'h25E2D3 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3937933\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"3938934\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hC040000 00000000; - FInput3E = 64'h8F768DC200000000; - ans = 64'h5952CA 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3939935\n"); - end - FInput1E = 64'h41CA8F7400000000; - FInput2E = 64'h0374367 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3940936\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0F08000000000000; - ans = 64'h001FFE B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3941937\n"); - end - FInput1E = 64'h1F1FFFFF00000000; - FInput2E = 64'hC00FFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3942938\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C95289600000000; - ans = 64'h4D3D23 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3943939\n"); - end - FInput1E = 64'h487FFFFF00000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h0FFFFB 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3944940\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3945941\n"); - end - FInput1E = 64'hBEB0000000000000; - FInput2E = 64'h1FFF000 00000000; - FInput3E = 64'h7E6488ED00000000; - ans = 64'h70D264 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"3946942\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"3947943\n"); - end - FInput1E = 64'hCD959EA500000000; - FInput2E = 64'hDFD5F55 00000000; - FInput3E = 64'hFDF418A900000000; - ans = 64'hACF488 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3948944\n"); - end - FInput1E = 64'hC008B7A500000000; - FInput2E = 64'hA93921B 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3949945\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h81FBFFFF00000000; - ans = 64'hF7FFFF 000000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3950946\n"); - end - FInput1E = 64'h380FFFFF00000000; - FInput2E = 64'hFFF7FFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3951947\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCD000FFF00000000; - ans = 64'hFFFFFA 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"3952948\n"); - end - FInput1E = 64'h480FFFFC00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0E0000FF00000000; - ans = 64'hFFFBFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3953949\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3954950\n"); - end - FInput1E = 64'h404FFFBF00000000; - FInput2E = 64'hFFFFFFA 00000000; - FInput3E = 64'hFABFFF0000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3955951\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3956952\n"); - end - FInput1E = 64'hBFFDFFFF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'h0100008000000000; - ans = 64'h007FFF 400000000; - flags = 5'hCE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CE "); - $fwrite(fp,"3957953\n"); - end - FInput1E = 64'h209FFFE000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3958954\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFB00000000; - ans = 64'hFF7FFF 400000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"3959955\n"); - end - FInput1E = 64'h34E00FFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 200000000; - flags = 5'h5F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"5F "); - $fwrite(fp,"3960956\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0A84EF0C00000000; - ans = 64'h64A95C 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"3961957\n"); - end - FInput1E = 64'h3F40000000000000; - FInput2E = 64'h0001008 00000000; - FInput3E = 64'h3F3DF8B900000000; - ans = 64'hCD3E9D A00000000; - flags = 5'h6C; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6C "); - $fwrite(fp,"3962958\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3963959\n"); - end - FInput1E = 64'h3CA2C03900000000; - FInput2E = 64'hDDEA73B 00000000; - FInput3E = 64'h8000FFFF00000000; - ans = 64'h800000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3964960\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3965961\n"); - end - FInput1E = 64'hBD30FFFF00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'hF3FFFFFF00000000; - ans = 64'hF82000 400000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"3966962\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFF83FFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3967963\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80FFFFF700000000; - ans = 64'hFFFFFD 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"3968964\n"); - end - FInput1E = 64'hBF8FF7FF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3969965\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFBF0 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3970966\n"); - end - FInput1E = 64'h8C4F03E800000000; - FInput2E = 64'h33F62C7 00000000; - FInput3E = 64'hFF0003FF00000000; - ans = 64'hFFFEFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3971967\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3972968\n"); - end - FInput1E = 64'h43CFFFFF00000000; - FInput2E = 64'hE01FFFF 00000000; - FInput3E = 64'hFC00080000000000; - ans = 64'h7FFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"3973969\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3974970\n"); - end - FInput1E = 64'h0C2FF7FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFCFFFFF000000000; - ans = 64'h0007FE 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"3975971\n"); - end - FInput1E = 64'h47F0007F00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3976972\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF200000000000000; - ans = 64'h100004 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3977973\n"); - end - FInput1E = 64'h3F2DD43800000000; - FInput2E = 64'h01B125D 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3978974\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hF7FFEF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3979975\n"); - end - FInput1E = 64'hBF802DC200000000; - FInput2E = 64'hF7035B6 00000000; - FInput3E = 64'h7E19314000000000; - ans = 64'h5B19B0 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"3980976\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3981977\n"); - end - FInput1E = 64'h3805DAEA00000000; - FInput2E = 64'h256B4C4 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h023FFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3982978\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3983979\n"); - end - FInput1E = 64'hBE6FFFFF00000000; - FInput2E = 64'hF1FFFFE 00000000; - FInput3E = 64'hFEA55FC100000000; - ans = 64'h37C607 C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"3984980\n"); - end - FInput1E = 64'hB62FFFFF00000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"3985981\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h016718D900000000; - ans = 64'h393F43 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3986982\n"); - end - FInput1E = 64'hC3DFC07F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"3987983\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h5600000200000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"3988984\n"); - end - FInput1E = 64'hB800000000000000; - FInput2E = 64'h1FFFFEF 00000000; - FInput3E = 64'h69705A6000000000; - ans = 64'h3AEF16 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"3989985\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3990986\n"); - end - FInput1E = 64'h98D2000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000100000000; - ans = 64'h0000FF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"3991987\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"3992988\n"); - end - FInput1E = 64'hB81F000000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h3EFFF00100000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"3993989\n"); - end - FInput1E = 64'hC2CFFFE000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3994990\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFA00000300000000; - ans = 64'hFEFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"3995991\n"); - end - FInput1E = 64'h800FFFFF00000000; - FInput2E = 64'hFFFFDDF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"3996992\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00201FFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"3997993\n"); - end - FInput1E = 64'hBCA0003F00000000; - FInput2E = 64'hFFFFF80 00000000; - FInput3E = 64'h74FF777B00000000; - ans = 64'h52D90F 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"3998994\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"3999995\n"); - end - FInput1E = 64'h7FD0000000000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'h1C000FF700000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4000996\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hEA; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EA "); - $fwrite(fp,"4001997\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFE080 00000000; - FInput3E = 64'h0A00000700000000; - ans = 64'h800000 F00000000; - flags = 5'hE3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E3 "); - $fwrite(fp,"4002998\n"); - end - FInput1E = 64'h68A0200000000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4003999\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCDFFFFFF00000000; - ans = 64'hFF0007 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"4005000\n"); - end - FInput1E = 64'hBF7FFFFF00000000; - FInput2E = 64'hFDFFDFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 300000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"4006001\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h020661FE00000000; - ans = 64'hA34A9A 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4007002\n"); - end - FInput1E = 64'h3FDFFFE000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hA600007F00000000; - ans = 64'hFFFFF7 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4008003\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4009004\n"); - end - FInput1E = 64'h41B0000F00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'h04516AF000000000; - ans = 64'h49CAAF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4010005\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hCB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CB "); - $fwrite(fp,"4011006\n"); - end - FInput1E = 64'h434C000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h00003F 400000000; - flags = 5'h43; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"43 "); - $fwrite(fp,"4012007\n"); - end - FInput1E = 64'hBFA4CE8B00000000; - FInput2E = 64'hE27A4DA 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4013008\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h42801FFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"4014009\n"); - end - FInput1E = 64'hB20000FF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4015010\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h05FFC00000000000; - ans = 64'h0FFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4016011\n"); - end - FInput1E = 64'hBFDFC00000000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'h3D0FFFBF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4017012\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4018013\n"); - end - FInput1E = 64'h463FFF8000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h052EED8C00000000; - ans = 64'h4C685D 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4019014\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4020015\n"); - end - FInput1E = 64'hBD60004000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'h1C2B849900000000; - ans = 64'h518549 300000000; - flags = 5'hF5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F5 "); - $fwrite(fp,"4021016\n"); - end - FInput1E = 64'h431FFFFF00000000; - FInput2E = 64'hBE00000 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4022017\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE8FDFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4023018\n"); - end - FInput1E = 64'h40D08D0600000000; - FInput2E = 64'hA6473B3 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4024019\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFF2000000000; - ans = 64'h000000 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4025020\n"); - end - FInput1E = 64'h43F0000000000000; - FInput2E = 64'h001F000 00000000; - FInput3E = 64'h40FEFFFF00000000; - ans = 64'h7FFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4026021\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4027022\n"); - end - FInput1E = 64'hBF7FFFFF00000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hCABE4F6200000000; - ans = 64'hE0BA0B C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4028023\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4029024\n"); - end - FInput1E = 64'hFFF0004000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hE5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E5 "); - $fwrite(fp,"4030025\n"); - end - FInput1E = 64'hC2F16C0200000000; - FInput2E = 64'h3FBE350 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4031026\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h80FFE00000000000; - ans = 64'h000000 C00000000; - flags = 5'h12; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"12 "); - $fwrite(fp,"4032027\n"); - end - FInput1E = 64'hFFFDFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h06; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"06 "); - $fwrite(fp,"4033028\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h5FFFFFFF00000000; - ans = 64'hEFFFFE 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4034029\n"); - end - FInput1E = 64'h15FD55A400000000; - FInput2E = 64'h82CEEC6 00000000; - FInput3E = 64'hA000000700000000; - ans = 64'h800000 C00000000; - flags = 5'h35; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"35 "); - $fwrite(fp,"4035030\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4036031\n"); - end - FInput1E = 64'hBFAF450700000000; - FInput2E = 64'hA72AD25 00000000; - FInput3E = 64'h20FFFFFF00000000; - ans = 64'hE0FFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4037032\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4038033\n"); - end - FInput1E = 64'h3F04000000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'hCAF0271600000000; - ans = 64'h575398 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4039034\n"); - end - FInput1E = 64'hBFC0001F00000000; - FInput2E = 64'hFFFFFF8 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4040035\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFC0001FF00000000; - ans = 64'hDFFFFF 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4041036\n"); - end - FInput1E = 64'hC1F3616600000000; - FInput2E = 64'h418E67A 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h2D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2D "); - $fwrite(fp,"4042037\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7E5B1D2100000000; - ans = 64'h3B58F6 B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4043038\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h02000FE 00000000; - FInput3E = 64'h05F1652D00000000; - ans = 64'h98152E 400000000; - flags = 5'h7F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"7F "); - $fwrite(fp,"4044039\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4045040\n"); - end - FInput1E = 64'hC070000000000000; - FInput2E = 64'h040FFFF 00000000; - FInput3E = 64'h0000FFFF00000000; - ans = 64'hFDFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4046041\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"4047042\n"); - end - FInput1E = 64'h37F1000000000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'h85007FFF00000000; - ans = 64'hFFFFBE B00000000; - flags = 5'hB5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B5 "); - $fwrite(fp,"4048043\n"); - end - FInput1E = 64'h380BFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4049044\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h02FBFFFF00000000; - ans = 64'hFFF800 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4050045\n"); - end - FInput1E = 64'hC7F0635000000000; - FInput2E = 64'hDB6DE83 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4051046\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD300000800000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4052047\n"); - end - FInput1E = 64'h41EFFFFF00000000; - FInput2E = 64'hC000006 00000000; - FInput3E = 64'h1C017FFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h46; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"46 "); - $fwrite(fp,"4053048\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4054049\n"); - end - FInput1E = 64'h3FCFFFFF00000000; - FInput2E = 64'hEBFFFFF 00000000; - FInput3E = 64'hBFFEFFF700000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4055050\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4056051\n"); - end - FInput1E = 64'h4347FF4200000000; - FInput2E = 64'hF83BE2F 00000000; - FInput3E = 64'hFCF0000000000000; - ans = 64'h000200 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"4057052\n"); - end - FInput1E = 64'hBB5FFBFF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4058053\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h72BF7FFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4059054\n"); - end - FInput1E = 64'h3FEBFFFF00000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4060055\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFFFC00000000; - ans = 64'h007FFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4061056\n"); - end - FInput1E = 64'hBFD2076300000000; - FInput2E = 64'hA9DF455 00000000; - FInput3E = 64'h05FFFFFF00000000; - ans = 64'hC007FE 300000000; - flags = 5'hD2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D2 "); - $fwrite(fp,"4062057\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4063058\n"); - end - FInput1E = 64'h432FFFF800000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h630889C000000000; - ans = 64'h4D1557 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4064059\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"4065060\n"); - end - FInput1E = 64'h2730000000000000; - FInput2E = 64'h000008E 00000000; - FInput3E = 64'h1D000FFE00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4066061\n"); - end - FInput1E = 64'hC3DFFFFF00000000; - FInput2E = 64'h87FFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4067062\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h0FFFFF 000000000; - flags = 5'h2E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2E "); - $fwrite(fp,"4068063\n"); - end - FInput1E = 64'hC22FFFFF00000000; - FInput2E = 64'hFFFFFC1 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4069064\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h07FFFFFF00000000; - ans = 64'hFFFEDF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4070065\n"); - end - FInput1E = 64'h1C4FFFFF00000000; - FInput2E = 64'h000001E 00000000; - FInput3E = 64'h01DBCBDB00000000; - ans = 64'h072A5D 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4071066\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4072067\n"); - end - FInput1E = 64'h7FFFFC0000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h7FFF000000000000; - ans = 64'h008000 B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4073068\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"4074069\n"); - end - FInput1E = 64'h6CA973D800000000; - FInput2E = 64'h604D342 00000000; - FInput3E = 64'h2B521D0C00000000; - ans = 64'h6CC873 300000000; - flags = 5'hE7; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E7 "); - $fwrite(fp,"4075070\n"); - end - FInput1E = 64'h404003FF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4076071\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3100000000000000; - ans = 64'h07FDFF 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4077072\n"); - end - FInput1E = 64'h7FF0000F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h6D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6D "); - $fwrite(fp,"4078073\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF800000000000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4079074\n"); - end - FInput1E = 64'hC342000000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'h9F7FDFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F1 "); - $fwrite(fp,"4080075\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4081076\n"); - end - FInput1E = 64'hC3F5895E00000000; - FInput2E = 64'hEA1EDC8 00000000; - FInput3E = 64'hFCFFFFFB00000000; - ans = 64'hFFFFEE F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4082077\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4083078\n"); - end - FInput1E = 64'hD370000000000000; - FInput2E = 64'h0040020 00000000; - FInput3E = 64'h7EFFFFFF00000000; - ans = 64'hC00003 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4084079\n"); - end - FInput1E = 64'h26F01FFF00000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4085080\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h070003FF00000000; - ans = 64'hBFFFFF C00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"4086081\n"); - end - FInput1E = 64'hBFD03F3400000000; - FInput2E = 64'h404643C 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"4087082\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF500000400000000; - ans = 64'h0007FF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4088083\n"); - end - FInput1E = 64'h439FF7DF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3C00208000000000; - ans = 64'h000000 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4089084\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4090085\n"); - end - FInput1E = 64'h002DFFFF00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'h51FFFFFF00000000; - ans = 64'hFFEFDE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4091086\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4092087\n"); - end - FInput1E = 64'h41CD6D7500000000; - FInput2E = 64'h5E2312B 00000000; - FInput3E = 64'hC2FFFFFF00000000; - ans = 64'hFDFFFB D00000000; - flags = 5'h44; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"44 "); - $fwrite(fp,"4093088\n"); - end - FInput1E = 64'hBEAFFF7F00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4094089\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFE87E6E00000000; - ans = 64'h3C5196 C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4095090\n"); - end - FInput1E = 64'hC1C007FB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4096091\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEF00000000000000; - ans = 64'h000000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4097092\n"); - end - FInput1E = 64'hC03FE99300000000; - FInput2E = 64'hC8AD539 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'h000003 B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4098093\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4099094\n"); - end - FInput1E = 64'hA932783100000000; - FInput2E = 64'hCE67A4B 00000000; - FInput3E = 64'h0700000700000000; - ans = 64'hFF7FFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4100095\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 200000000; - flags = 5'h21; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"21 "); - $fwrite(fp,"4101096\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h001FFF6 00000000; - FInput3E = 64'hD201000000000000; - ans = 64'h000200 C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"4102097\n"); - end - FInput1E = 64'h41CFFFF000000000; - FInput2E = 64'h001FFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4103098\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h81FFE07F00000000; - ans = 64'hFFFFFF 600000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4104099\n"); - end - FInput1E = 64'h0C9FFFFE00000000; - FInput2E = 64'h0000020 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4105100\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD1BAD4600000000; - ans = 64'h9D305B 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4106101\n"); - end - FInput1E = 64'hB8538D5900000000; - FInput2E = 64'hDADB8AC 00000000; - FInput3E = 64'h34FFFFF700000000; - ans = 64'hFF7FFF C00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"4107102\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4108103\n"); - end - FInput1E = 64'h4030212300000000; - FInput2E = 64'hFA8E3F3 00000000; - FInput3E = 64'h02F152C500000000; - ans = 64'h739B5D 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4109104\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4110105\n"); - end - FInput1E = 64'hB052000000000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h7EC552F600000000; - ans = 64'h1B5D24 B00000000; - flags = 5'hE8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E8 "); - $fwrite(fp,"4111106\n"); - end - FInput1E = 64'h3FB8825C00000000; - FInput2E = 64'h99621B2 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4112107\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF003FFF00000000; - ans = 64'hDFFFFF 300000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"4113108\n"); - end - FInput1E = 64'h3FD03FFF00000000; - FInput2E = 64'hFFFFBFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'h08; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"08 "); - $fwrite(fp,"4114109\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100001F00000000; - ans = 64'hFFF7FF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4115110\n"); - end - FInput1E = 64'hFFDFFFFE00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'hE500004000000000; - ans = 64'h0000FF B00000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"4116111\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4117112\n"); - end - FInput1E = 64'hC7EFCAEA00000000; - FInput2E = 64'h8D235F8 00000000; - FInput3E = 64'h69D2C56800000000; - ans = 64'hF1E3C4 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4118113\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4119114\n"); - end - FInput1E = 64'h4054000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0D80000000000000; - ans = 64'h000800 C00000000; - flags = 5'hC2; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C2 "); - $fwrite(fp,"4120115\n"); - end - FInput1E = 64'hC150003F00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4121116\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h851FFFC000000000; - ans = 64'h000000 300000000; - flags = 5'hEB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EB "); - $fwrite(fp,"4122117\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"4123118\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3B3FFFFF00000000; - ans = 64'hBFFFFF 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4124119\n"); - end - FInput1E = 64'hFFEEFFFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h3E0003FF00000000; - ans = 64'hFEFFFF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4125120\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4126121\n"); - end - FInput1E = 64'hF32A3FED00000000; - FInput2E = 64'hBBDA62E 00000000; - FInput3E = 64'h0157F2DA00000000; - ans = 64'h38EC60 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4127122\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"4128123\n"); - end - FInput1E = 64'h3FB0000000000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFFE0E B00000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"4129124\n"); - end - FInput1E = 64'h40A96CFA00000000; - FInput2E = 64'h346226E 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4130125\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100008000000000; - ans = 64'h400000 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4131126\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h00003DE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4132127\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03F260D300000000; - ans = 64'hE8A7F1 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4133128\n"); - end - FInput1E = 64'hC023FFFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h80FFFDF000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4134129\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4135130\n"); - end - FInput1E = 64'hA280000300000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h0500000000000000; - ans = 64'h0FFFDF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4136131\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4137132\n"); - end - FInput1E = 64'h4020370800000000; - FInput2E = 64'h2D3FF38 00000000; - FInput3E = 64'h5EDFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hCB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CB "); - $fwrite(fp,"4138133\n"); - end - FInput1E = 64'hC4BFFFFF00000000; - FInput2E = 64'hDFFFF7F 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4139134\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'h7FF000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4140135\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E5 "); - $fwrite(fp,"4141136\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF27DC13200000000; - ans = 64'h644D5F B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4142137\n"); - end - FInput1E = 64'h43EFFFDF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h3DFFFFFF00000000; - ans = 64'hDFE000 C00000000; - flags = 5'hDB; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DB "); - $fwrite(fp,"4143138\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4144139\n"); - end - FInput1E = 64'h3FD2003F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h4FFF807F00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4145140\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"4146141\n"); - end - FInput1E = 64'h3FEFF83F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F50DE2E00000000; - ans = 64'hA8F7BF 300000000; - flags = 5'h80; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"80 "); - $fwrite(fp,"4147142\n"); - end - FInput1E = 64'h8000000000000000; - FInput2E = 64'h0020007 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4148143\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h341A62DA00000000; - ans = 64'h5CCE20 C00000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"4149144\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4150145\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h07F22E1A00000000; - ans = 64'hFD8B9B 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4151146\n"); - end - FInput1E = 64'h2C5FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA54950D00000000; - ans = 64'hD2EEDD 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4152147\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4153148\n"); - end - FInput1E = 64'h3FC0003F00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'hD200000000000000; - ans = 64'hFFFFDF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4154149\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4155150\n"); - end - FInput1E = 64'h3F90000000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'h0D1961F600000000; - ans = 64'hFADED4 800000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"4156151\n"); - end - FInput1E = 64'h3F7FFDFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4157152\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2500001F00000000; - ans = 64'hFFFFE0 400000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4158153\n"); - end - FInput1E = 64'h3FEE56FF00000000; - FInput2E = 64'h061B00B 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h34; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"34 "); - $fwrite(fp,"4159154\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F00008000000000; - ans = 64'h001FFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4160155\n"); - end - FInput1E = 64'hC1F3FFFD00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0371E00100000000; - ans = 64'hE6DF3B 700000000; - flags = 5'hE6; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E6 "); - $fwrite(fp,"4161156\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4162157\n"); - end - FInput1E = 64'h3B0FB7F300000000; - FInput2E = 64'h5C38D6C 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFEF800 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4163158\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h9F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"9F "); - $fwrite(fp,"4164159\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h03FFFDF 00000000; - FInput3E = 64'hFE00FFFF00000000; - ans = 64'hFFBFFF B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4165160\n"); - end - FInput1E = 64'h43C0000100000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4166161\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h80B5A88D00000000; - ans = 64'h4AE18E 400000000; - flags = 5'h90; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"90 "); - $fwrite(fp,"4167162\n"); - end - FInput1E = 64'h388504AF00000000; - FInput2E = 64'hABA5E83 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 300000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"4168163\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7EFF7FFF00000000; - ans = 64'h000000 C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4169164\n"); - end - FInput1E = 64'h3FC5000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E0FFFFF00000000; - ans = 64'hFFFF00 B00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4170165\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4171166\n"); - end - FInput1E = 64'h7FDACC9800000000; - FInput2E = 64'h335A2C6 00000000; - FInput3E = 64'hFF006FFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4172167\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4173168\n"); - end - FInput1E = 64'hFFE00FFF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'h1CFFF00000000000; - ans = 64'h00001F 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4174169\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4175170\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2C000FFF00000000; - ans = 64'hFFFEFF 400000000; - flags = 5'h03; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"03 "); - $fwrite(fp,"4176171\n"); - end - FInput1E = 64'h5FB49AD900000000; - FInput2E = 64'hDE5E24E 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4177172\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1DF0000000000000; - ans = 64'h400000 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4178173\n"); - end - FInput1E = 64'hC80C9EA000000000; - FInput2E = 64'hFC5165C 00000000; - FInput3E = 64'hCCFFFFFE00000000; - ans = 64'hFFFBFF B00000000; - flags = 5'h2E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2E "); - $fwrite(fp,"4179174\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4180175\n"); - end - FInput1E = 64'h3CACF95500000000; - FInput2E = 64'h7D31D55 00000000; - FInput3E = 64'hCD6C0DC200000000; - ans = 64'h20EA7F F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4181176\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4182177\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h5000000000000000; - ans = 64'hFF7FFE C00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4183178\n"); - end - FInput1E = 64'h3E80010000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4184179\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF709CDB000000000; - ans = 64'h78C068 600000000; - flags = 5'hD4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D4 "); - $fwrite(fp,"4185180\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4186181\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hD000000000000000; - ans = 64'hFFF7FF 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4187182\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFF8007E 00000000; - FInput3E = 64'h01950B7700000000; - ans = 64'h7DFBF8 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4188183\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4189184\n"); - end - FInput1E = 64'hC02EFDFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1C03FFBF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4190185\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4191186\n"); - end - FInput1E = 64'h1AD5B91A00000000; - FInput2E = 64'h6A482EF 00000000; - FInput3E = 64'hE80001FF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4192187\n"); - end - FInput1E = 64'h402FFCFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4193188\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h41007FEF00000000; - ans = 64'hFFFFFF 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4194189\n"); - end - FInput1E = 64'h403FFFE000000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hDE; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DE "); - $fwrite(fp,"4195190\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000008100000000; - ans = 64'h000000 F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4196191\n"); - end - FInput1E = 64'h4010000400000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'hFCF7C00000000000; - ans = 64'h000000 A00000000; - flags = 5'hD4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D4 "); - $fwrite(fp,"4197192\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4198193\n"); - end - FInput1E = 64'h7FFFFFFE00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h7FFFDEFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4199194\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4200195\n"); - end - FInput1E = 64'h8010800000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h03FDFFFE00000000; - ans = 64'h000000 B00000000; - flags = 5'h15; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"15 "); - $fwrite(fp,"4201196\n"); - end - FInput1E = 64'hCEF5162C00000000; - FInput2E = 64'hC0CC4F1 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4202197\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FC4000000000000; - ans = 64'h000000 C00000000; - flags = 5'h0B; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0B "); - $fwrite(fp,"4203198\n"); - end - FInput1E = 64'hC3CFFFFF00000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h8F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"8F "); - $fwrite(fp,"4204199\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD007FDF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4205200\n"); - end - FInput1E = 64'h7FD003F700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEC7FA9500000000; - ans = 64'hD578CA B00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4206201\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4207202\n"); - end - FInput1E = 64'hC140000000000000; - FInput2E = 64'h0000030 00000000; - FInput3E = 64'h03FFBFE000000000; - ans = 64'h000000 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4208203\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - flags = 5'hC3; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C3 "); - $fwrite(fp,"4209204\n"); - end - FInput1E = 64'h4000000800000000; - FInput2E = 64'h01FFFFE 00000000; - FInput3E = 64'hE503FFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h50; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"50 "); - $fwrite(fp,"4210205\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0DFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4211206\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'hFFFFFE C00000000; - flags = 5'hE8; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E8 "); - $fwrite(fp,"4212207\n"); - end - FInput1E = 64'hBAEA053600000000; - FInput2E = 64'hD7B0AAC 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4213208\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'hFFEFFF B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4214209\n"); - end - FInput1E = 64'h7FFFFFFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFC000F C00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"4215210\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4216211\n"); - end - FInput1E = 64'hBF5E5E6E00000000; - FInput2E = 64'hF03BFC9 00000000; - FInput3E = 64'hD6850FF000000000; - ans = 64'h78B7E2 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4217212\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 A00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4218213\n"); - end - FInput1E = 64'h43287D0100000000; - FInput2E = 64'h3E29A0A 00000000; - FInput3E = 64'h1AF0001F00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4219214\n"); - end - FInput1E = 64'h4800000000000000; - FInput2E = 64'h0077FFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4220215\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD56C61D00000000; - ans = 64'hA5C7FA 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4221216\n"); - end - FInput1E = 64'h581178ED00000000; - FInput2E = 64'h380CFBA 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4222217\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEC00000000000000; - ans = 64'h017FFE 000000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4223218\n"); - end - FInput1E = 64'h3FCAF7E700000000; - FInput2E = 64'h477A9E5 00000000; - FInput3E = 64'h7608008000000000; - ans = 64'h000000 C00000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"4224219\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4225220\n"); - end - FInput1E = 64'hC040000000000000; - FInput2E = 64'h7FFFF7F 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFF007 C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4226221\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 400000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4227222\n"); - end - FInput1E = 64'hBF1EECFB00000000; - FInput2E = 64'hB9BD95A 00000000; - FInput3E = 64'hCAFFFC0000000000; - ans = 64'h07FFFF C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4228223\n"); - end - FInput1E = 64'hC1ECF93800000000; - FInput2E = 64'h09BFF73 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4229224\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCFFFFFFF00000000; - ans = 64'hC00080 B00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4230225\n"); - end - FInput1E = 64'h3FD473D100000000; - FInput2E = 64'h87B1803 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h3D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3D "); - $fwrite(fp,"4231226\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFF800000000; - ans = 64'h000006 400000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4232227\n"); - end - FInput1E = 64'h256E000000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h2AFFFE0000000000; - ans = 64'h00FFFF 300000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4233228\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4234229\n"); - end - FInput1E = 64'h3F70FC0000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6A00000700000000; - ans = 64'hFF8000 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4235230\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4236231\n"); - end - FInput1E = 64'hC00814ED00000000; - FInput2E = 64'h2BE10E7 00000000; - FInput3E = 64'hEFFFFFF000000000; - ans = 64'h000800 400000000; - flags = 5'h6D; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6D "); - $fwrite(fp,"4237232\n"); - end - FInput1E = 64'h28A0000000000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 F00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4238233\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h46A7B68300000000; - ans = 64'hF1777D 300000000; - flags = 5'h58; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"58 "); - $fwrite(fp,"4239234\n"); - end - FInput1E = 64'hB7E0000000000000; - FInput2E = 64'h0000280 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4240235\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF5FFFFFB00000000; - ans = 64'hFFFFEF B00000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4241236\n"); - end - FInput1E = 64'h3E6FFFFE00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F13746900000000; - ans = 64'hB8CCBC 300000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"4242237\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4243238\n"); - end - FInput1E = 64'hCB4FFFD000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFA00000000000000; - ans = 64'h0003FA 800000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4244239\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4245240\n"); - end - FInput1E = 64'h43F0000000000000; - FInput2E = 64'h801FFFF 00000000; - FInput3E = 64'h0000010F00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h2F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"2F "); - $fwrite(fp,"4246241\n"); - end - FInput1E = 64'hC02FFFDF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4247242\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hAE00000000000000; - ans = 64'h00008F 300000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4248243\n"); - end - FInput1E = 64'h3EE0000200000000; - FInput2E = 64'h0800000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"4249244\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0D00000000000000; - ans = 64'h3C0000 300000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4250245\n"); - end - FInput1E = 64'h7FF0000000000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h08003FFF00000000; - ans = 64'hFFFFF8 400000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4251246\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4252247\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0200003 00000000; - FInput3E = 64'h35E8AF9600000000; - ans = 64'hBC9EBF C00000000; - flags = 5'h4F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"4F "); - $fwrite(fp,"4253248\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hFD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FD "); - $fwrite(fp,"4254249\n"); - end - FInput1E = 64'h428FFFFF00000000; - FInput2E = 64'hFFF001F 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h17FFFE 400000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4255250\n"); - end - FInput1E = 64'h3E03B6F600000000; - FInput2E = 64'hB824C58 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 B00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4256251\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4100FFFF00000000; - ans = 64'hFFC000 C00000000; - flags = 5'h3F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3F "); - $fwrite(fp,"4257252\n"); - end - FInput1E = 64'h74C8800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"4258253\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0738896B00000000; - ans = 64'hE9988D 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4259254\n"); - end - FInput1E = 64'hBE70000000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'h9180000000000000; - ans = 64'h00003F 500000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4260255\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4261256\n"); - end - FInput1E = 64'hC130020300000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB7FF46CE00000000; - ans = 64'h5A193A 300000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4262257\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 B00000000; - flags = 5'h1A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1A "); - $fwrite(fp,"4263258\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'hFC00001 00000000; - FInput3E = 64'h3F7D421900000000; - ans = 64'h77B453 500000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4264259\n"); - end - FInput1E = 64'h4000001D00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 000000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4265260\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8103000000000000; - ans = 64'h000000 B00000000; - flags = 5'h30; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"30 "); - $fwrite(fp,"4266261\n"); - end - FInput1E = 64'hC015110A00000000; - FInput2E = 64'h809D0D4 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 200000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4267262\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0CFFFFFE00000000; - ans = 64'h00000E C00000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4268263\n"); - end - FInput1E = 64'hC02FFFBF00000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'h0200000700000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4269264\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4270265\n"); - end - FInput1E = 64'h4E5FFFBF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFE7FE B00000000; - flags = 5'hAF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"AF "); - $fwrite(fp,"4271266\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4272267\n"); - end - FInput1E = 64'hD3C0000000000000; - FInput2E = 64'h003F000 00000000; - FInput3E = 64'hFF08000000000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hCF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"CF "); - $fwrite(fp,"4273268\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h001FFF0 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 700000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4274269\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h12840DF400000000; - ans = 64'hE9E267 400000000; - flags = 5'h3E; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3E "); - $fwrite(fp,"4275270\n"); - end - FInput1E = 64'h800FFE0000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 400000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4276271\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hAC00000000000000; - ans = 64'h0003FF 300000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4277272\n"); - end - FInput1E = 64'h43EFFFFF00000000; - FInput2E = 64'hFEFDFFF 00000000; - FInput3E = 64'hBBFFFFDB00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4278273\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4279274\n"); - end - FInput1E = 64'h3E04F6D400000000; - FInput2E = 64'h710FEDC 00000000; - FInput3E = 64'h00FFFC2000000000; - ans = 64'h000000 F00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"4280275\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 300000000; - flags = 5'hE1; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E1 "); - $fwrite(fp,"4281276\n"); - end - FInput1E = 64'hB1F0000100000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'hFC00400000000000; - ans = 64'h00003E 300000000; - flags = 5'hB0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"B0 "); - $fwrite(fp,"4282277\n"); - end - FInput1E = 64'hBF4E815700000000; - FInput2E = 64'h59C1279 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4283278\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hD3FDFFF700000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD5; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D5 "); - $fwrite(fp,"4284279\n"); - end - FInput1E = 64'hB7EA540800000000; - FInput2E = 64'h5DEC316 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 C00000000; - flags = 5'hDD; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DD "); - $fwrite(fp,"4285280\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFC0000F00000000; - ans = 64'hFFFFFE 800000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4286281\n"); - end - FInput1E = 64'hA61F700B00000000; - FInput2E = 64'h23A38CC 00000000; - FInput3E = 64'h7E5CE82A00000000; - ans = 64'h871744 C00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4287282\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4288283\n"); - end - FInput1E = 64'h3FFFFFFC00000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'h4CBFFFFF00000000; - ans = 64'hFEFFFE 400000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4289284\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"4290285\n"); - end - FInput1E = 64'hB81F673600000000; - FInput2E = 64'h00F4FAB 00000000; - FInput3E = 64'h1D2ADFA000000000; - ans = 64'hC51A47 300000000; - flags = 5'hBF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"BF "); - $fwrite(fp,"4291286\n"); - end - FInput1E = 64'h801FFFBF00000000; - FInput2E = 64'hFFFFFDE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4292287\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE74A59400000000; - ans = 64'h6B6EF3 400000000; - flags = 5'h20; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"20 "); - $fwrite(fp,"4293288\n"); - end - FInput1E = 64'h3FE0003F00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 300000000; - flags = 5'h65; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"65 "); - $fwrite(fp,"4294289\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h03FFFF F00000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"4295290\n"); - end - FInput1E = 64'hBB4FFFFE00000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'h7002000000000000; - ans = 64'h01FFFF D00000000; - flags = 5'hA0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A0 "); - $fwrite(fp,"4296291\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 700000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4297292\n"); - end - FInput1E = 64'hC18543C600000000; - FInput2E = 64'h24DBF17 00000000; - FInput3E = 64'hECAE2E2300000000; - ans = 64'hAAB561 B00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4298293\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - flags = 5'h10; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"10 "); - $fwrite(fp,"4299294\n"); - end - FInput1E = 64'h3FFBFFFF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'hFCFFF80F00000000; - ans = 64'hFFFFFF 800000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4300295\n"); - end - FInput1E = 64'h4273FFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 800000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4301296\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE030A6400000000; - ans = 64'h7DC44C 700000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"D0 "); - $fwrite(fp,"4302297\n"); - end - FInput1E = 64'hBE30000000000000; - FInput2E = 64'h20003FF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 B00000000; - flags = 5'h60; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"60 "); - $fwrite(fp,"4303298\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3E07FFFF00000000; - ans = 64'hFFFFBF 400000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"4304299\n"); - end - FInput1E = 64'h3EEFE20000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h77FFFF 400000000; - flags = 5'h13; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"13 "); - $fwrite(fp,"4305300\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - flags = 5'h0F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"0F "); - $fwrite(fp,"4306301\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'h3EFFFFFF00000000; - ans = 64'hBFBFFF 000000000; - flags = 5'h1F; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"1F "); - $fwrite(fp,"4307302\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4308303\n"); - end - FInput1E = 64'h3D6FFFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h07FDFE B00000000; - flags = 5'hC0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"C0 "); - $fwrite(fp,"4309304\n"); - end - FInput1E = 64'h2540000000000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 C00000000; - flags = 5'h40; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"40 "); - $fwrite(fp,"4310305\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1D00400000000000; - ans = 64'h03FFFF 400000000; - flags = 5'h70; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"70 "); - $fwrite(fp,"4311306\n"); - end - FInput1E = 64'h406FFFFF00000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE F00000000; - flags = 5'hDF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"DF "); - $fwrite(fp,"4312307\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h08F8000000000000; - ans = 64'hFFFFFE B00000000; - flags = 5'hD0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] &&